簡體   English   中英

Android:在卸載時從外部存儲中刪除應用相關文件?

[英]Android: Delete app associated files from external storage on Uninstall?

如果我正在編寫的應用程序將一些文件永久存儲到外部存儲器(因此它們在應用程序退出[已銷毀]后仍然存在)會很方便,但是在卸載時我想做一些體面的事情並擁有這些刪除文件以釋放存儲空間。

有沒有辦法在卸載時刪除這些文件?

如果沒有(並且我持懷疑態度),那么我每次都必須創建這些文件。 我試圖節省啟動時間,並通過永久存在來占用所需的空間。

注意:我需要使用外部存儲,因此內部存儲或數據庫都不合適。

實際上它是可能的。

android會自動刪除外部存儲中的應用程序文件,但文件必須位於應用程序的特定路徑中:

“..... /安卓/數據/ APP_PACKAGE_NAME /”

其中APP_PACKAGE_NAME是應用程序的包名稱。 另一條自動清空的路徑是:

“..... / Android / obb / APP_PACKAGE_NAME /”,其中APP_PACKAGE_NAME是應用程序的包名稱。

數據適用於您想要的任何內容。 obb文件夾用於使用play-store和apk擴展庫下載的大文件。 你不應該在那里創建文件。

不,我不相信。 卸載應用程序時(或者如果用戶按下“應用程序設置”應用程序中的“清除數據”按鈕),將僅刪除寫入內部存儲的文件。

您的應用也無法收到自己的PACKAGE_REMOVED廣播意圖,因此您基本上沒有通知您正在卸載。

是的,這是可能的。 只需將文件寫入外部文件目錄:

File dir = getExternalFilesDir(null);

這將在/Android/data/your.package/創建一個文件夾。 請注意,這不是sdcard中的 外部 ,但可以公開訪問。 如果用戶卸載了您的應用,則此目錄也將被刪除,以及其所有內容。

引自CommonsWare的博客文章

  • 內部存儲:您的文件已刪除

  • 外部存儲:如果您將文件寫入以getExternalFilesDir()getExternalCacheDir()根的位置,則會刪除您的文件。 如果您在其他地方編寫了文件(例如, Environment.getExternalStoragePublicDirectory() ),則不會刪除您的文件

  • Android 4.4之前的可移動存儲:可移動存儲無法正式訪問; 如果您的文件在那里結束,則在卸載您的應用程序時不應刪除它

  • 可移動存儲,Android 4.4+:AFAIK,如果您寫入受支持的位置( getExternalFilesDirs()getExternalCacheDirs() ),如果卸載時該設備中有特定位的可移動存儲,則會刪除您的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM