loading...
پرشین استک
fsfsdfs
PERSIAN STACK بازدید : 165 1396/06/16 نظرات (0)

می خواهم Dumpster مانند برنامه ایجاد کنم برای اینکه می خواهم زمانی که هر فایلی حذف شد به من اطلاعیه ای (notification) داده شود تا بتوانم آنرا در حافظه برنامه ذخیره کنم . من از File Observer استفاده می کنم و پس از حذف فایل به من اطلاعیه می دهد اما در marshmallow پس از حذف فایل به من اطلاعیه نمی دهد . من این لینک را برای File Observer ارسال کردم .

من کد زیر را امتحان کردم :

 

@Override
public void onEvent(intevent,String path){
if (path == null){
return;
}
//the monitored file or directory was deleted, monitoring effectively stops
if ((FileObserver.DELETE_SELF & event) != 0){
FileAccessLogStatic.accessLogMsg += absolutePath + "/" + " is deletedn";
}
}

 

پاسخ 1 :

بیایید اول موارد زیر را روشن کنیم .

1. Dumpster از دایرکتوری trash استفاده می کند که ممکن است همیشه وجود نداشته باشد . لازم به ذکر است که Dumpster در بسیاری از دستگاه ها به درستی اجرا نمی شود، زیرا از طریق google reviews دیده می شود.

2. Dumpster از File Handler سیستم خودش استفاده می کند که از یک سرویس برای بررسی رخداد onClick استفاده می کند و اگر رخداد onClick مربوط به یک فایل باشد ، فایل را ذخیره کرده و همچنین و همچنین مسیرش را در یک فولدر ( معمولا پنهان ) و آن فولدر را هم در یک database محلی ذخیره می کند .

3. هر چه امنیت دستگاه افزایش می یابد ، امکان انجام این وظایف کمتر می شود . FileObserver از مفهوم بررسی هرگونه تغییرات در فایل ها یا حتی دایرکتوری ها استفاده می کند اما شما نمی توانید در آن تاثیری بگذارید به این معنی که شما نمی توانید از حذف آن و رساندن اطلاعیه به کاربر جلوگیری کنید .

4. inotify.h برای اهداف NDK استفاده شده است از جمله ایجاد برنامه هایی با استفاده از بررسی پوشه ها و فایل ها . علاوه بر این مفهوم استفاده شده در inotify مشابه FileObserver است . پس از حذف فایل، می توانید اعلان دریافت کنید. کد مورد استفاده در inotify چیزی شبیه به این است .

مراحل :

1. نمونه inotify را با استفاده از ()inotify_init  ایجاد کنید .

2. تمام دایرکتوری ها را با استفاده از متد ()inotify_add_watch در لیست inotify اضافه کنید .

3. برای تعیین وقایع رخ داده ، ()read را روی نمونه inotify اجرا کنید . این خواندن (read) بلاک خواهد شد تا رخداد تغییر اتفاق بیافتد . توصیه می شود تا برای عمل انتخابی خواندن روی نمونه inotify از فراخوانی متد ()select  استفاده کنید .

4. Read لیستی از رخداد هایی که روی دایرکتوری ها اتفاق افتاده را باز می گرداند . بر اساس مقدار بازگشتی از متد ()read ، ما می فهمیم که چه نوع تغییری رخ داده است .

5. در صورت حذف شدن مشاهده (watch) در دایرکتوری ها یا فایل ها ، ()inotify_rm_watch را فراخوانی کنید .

 

دو متد موجود در inotify به صورت زیر هستند :

IN_DELETE - فایل یا دایرکتوری از دایرکتوری مشاهده شده حذف شده است .

IN_DELETE_SELF - فایل یا دایرکتوری مشاهده شده خودش حذف شده است .

هر دوی این متد ها شبیه به FileObserver عمل می کنند .

شما احتیاج به ایجاد File Manager خودتان در جایی دارید که می توانید کلاس FileV2 را که از File مشتق می شود ، ایجاد کنید و می توانید متد های حذف (delete) یا همه ی متد ها را Override کنید . شما می توانید یک پاپ آپ شخصی سازی شده ایجاد کنید که با زدن دکمه بله ، فایل را به همراه فایل پشتیبان حذف کند و با زدن دکمه نه ، پاپ آپ را ببندد . (اطمینان حاصل کنید کاربر از File Manager برای حذف استفاده می کند در غیر این صورت این کار نخواهد کرد چرا که Override کردن ()delete فقط باعث خراب شدن برنامه های دیگر خواهد شد).

 

class filev2 extends File{

public filev2(@NonNull String pathname){
super(pathname);
}

public filev2(@NonNull URI uri){
super(uri);
}

@Override
public boolean delete(){
// return super.delete();
//Do as you want and return the boolean.
}

}


اگر کاربر شما از File Manager استفاده می کند ، مطمئن شوید که فایل های شما ذخیره خواهد شد . شما می توانید intent-filters را برای این کار تنظیم کنید تا FileManager در ACTION_VIEW برای این موضوع به کار آید .

 

صفحه اصلی

مطالب مرتبط
ارسال نظر برای این مطلب

کد امنیتی رفرش
درباره ما
Profile Pic
با توجه به اینکه بیشتر منابع برنامه نویسی از جمله وبسایت ها ، خارجی بوده و همچنین برای بسیاری از افراد از نظر ترجمه مشکل ساز می شود ، وبسایت ما ترجمه این منابع و در اختیار کاربران قرار دادن را هدف قرار داده است .
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    فروش قالب وردپرس دانلود نرم افزار – پوسته ایران دانلود
    فروش قالب وردپرس دانلود نرم افزار ایران دانلود : اگر به دنبال پوسته وردپرس فارسی برای سایت دانلودی تان هستید بدون شک قالب وردپرس ایران دانلود با سئو بالا و رابط کاربری زیبا میتواند نظرتان را جلب کند. در طراحی و کدنویسی...
    قالب وردپرس فروش فایل و محصولات مجازی – پوسته ایران تمز

    آیا میدانید توسط وردپرس و افزونه EDD میتوانید فروشگاهی آنلاین برای فروش کتاب و مقالات pdf، رام اندروید، قالب و افزونه وردپرس، نرم افزارهای کامپیوتر و موبایل و … راه اندازی و کسب درامد کنید؟ با استفاده از افزونه وردپرس ایزی دیجیتال...

    خرید قالب وردپرس پارس بلاگ

    پوسته پارس بلاگ، قالبی زیبا با کدنویسی استاندارد و حرفه ای می باشد که توسط گروه ایران تمز طراحی شده است. با خرید قالب وردپرس پارس بلاگ که دارای امکانات زیادی است میتوانید سایت فروش فایل و محصولات دانلودی راه اندازی کنید....

    آمار سایت
  • کل مطالب : 142
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 11
  • آی پی امروز : 3
  • آی پی دیروز : 28
  • بازدید امروز : 8
  • باردید دیروز : 45
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 8
  • بازدید ماه : 595
  • بازدید سال : 4,494
  • بازدید کلی : 116,509