我創建了一個應用程序,它創建和存儲文件到SD卡。有沒有辦法將文件夾與應用程序綁定,以便在用戶在Android設備上運行卸載時刪除所有文件?Android - 保存或刪除應用程序在卸載時創建的文件
回答
您的應用程序無法知道它正在被卸載(無需修改內核)。在data/data/your.app.package中創建的所有文件在安裝後會自動刪除。
我不認爲從SD卡上清除任何東西。你可以做一個快速測試並找出答案。
另一種方法可能是讓另一個應用程序檢查該應用程序是否安裝。如果不是,它可以做清理工作。
應用程序`NQ移動安全`調用一個活動在卸載看http://i.imgur.com/Fos9N.png,http: //i.imgur.com/fIZbK.png,http://i.imgur.com/cG9Hr.png和問題http://stackoverflow.com/questions/10219328/how-to-show-an-activity-before-my-app-is-uninstalled-android – 2012-06-16 10:22:13
對於爲Android 6.0或更高版本編譯的應用程序並啓用雲備份,請參閱Y.S.的答案。 – dermatthias 2017-02-09 14:40:25
似乎自2009年以來有一些發展:)。
如果您使用API 8級或更大 ,使用
getExternalCacheDir()
來 打開表示 外部存儲目錄,你應該 保存緩存文件的文件。如果用戶 卸載您的應用程序,這些 文件將被自動刪除。然而,在您的 應用程序的生命週期中,您應該管理這些 緩存文件,並刪除那些不需要的文件以便保留 文件空間。如果您使用API 7級或更低, 使用
getExternalStorageDirectory()
到 打開表示外部存儲的根 一個文件,然後在下面的 目錄寫 緩存數據:/Android/data // cache/ 這是您的Java風格的 程序包名稱,例如 「com.example.android.app」。
如
Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"
這裏包的名字是你的應用程序包名稱,如com.think.abc
即使在使用getExternalCacheDir()
時,我也已經看到,應用程序包名稱的緩存目錄不會像在Android文檔中所說的那樣自動刪除,至少在聯想A1上不會。這可能有點天真,但您可能需要在重新安裝期間清理以前的數據。在那裏,您可以瞭解您的應用程序是否是第一次安裝或正在安裝的 - 您可以使用共享首選項存儲值(可能是布爾值)。它可以是這樣的:
SharedPreferences sharedPrefs = getSharedPreferences(INSTALL_PREFS, MODE_PRIVATE);
if(sharedPrefs.getBoolean("AppInstalled", false) == false){
//DELETE APP DIRECTORY
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putBoolean("AppInstalled", true);
editor.commit();
}
這樣,每次應用程序運行時,它都會檢查它是否是第一次運行。當應用程序被刪除時,應用程序的共享首選項也會被刪除。然後,下次安裝時,if(...)將是true,您可以在那裏進行一些清理。
我知道這並不直接回答這個問題,並且在用戶的設備上留下未使用的數據並不好,但我認爲這可能是嘗試清理應用程序被刪除時的一種替代方法,這是明智的但似乎不可能。
我不知道我是否被誤解,但似乎它會按預期工作,如果您從第一次應用發佈以來使用它,您是否同意? – 2014-11-13 14:42:07
似乎從那以後有一個正確的soltuion,Context.getExternalFilesDir():
返回到外部文件系統 目錄的絕對路徑(即在Environment.getExternalStorageDirectory某處()),其中 的應用程序可以放置它擁有的持久性文件。這些文件是應用程序專用的 ,並且對於用戶而言通常不可見爲 媒體。
這就好比getFilesDir()中,當 卸載應用程序
我加入這個,因爲現有的答案是在2017年 過時雖然這是事實,這些文件將被刪除,有在應用程序卸載時沒有回調,已經提供了一些機制來保存除卸載之外的應用程序數據。
由於Android 6.0(API 23),所述Auto Backup for Apps 特徵被引入,這允許開發人員能夠允許或阻止自動應用備份。從API 23開始,默認情況下啓用備份。
兩個新的
application
標籤已引入清單文件:android:allowBackup
和android:fullBackupContent
。
停用自動備份,在application
標籤下添加android:allowBackup="false"
清單文件。值爲「true」會自動將共享首選項和數據庫保存到雲,以及other files。
其次,你可以很具體的你要的文件,以包括或排除刪除或保存在與android:fullBackupContent
標籤卸載。該屬性指向包含備份規則的XML文件。以下語法創建的res/xml/
目錄中的XML配置文件:
<full-backup-content>
<include domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
<exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
</full-backup-content>
在這裏,您可以添加特定的文件類型包含或排除及其相關路徑。將android:fullBackupContent = "@xml/my_backup_rules"
標記添加到application
標記下的清單文件中。
指定文件將備份到設備主電子郵件帳戶下的Google Drive。在重新安裝時,數據將被恢復,只要用戶啓用以下設置:
Settings -> Backup & Reset -> Automatic Restore
。
還應該注意的是備份數據不能被用戶或設備上的其他應用程序讀取。
同樣也可以從谷歌雲端硬盤應用,從這裏訪問:
Google Drive -> Settings -> Auto backup for apps -> Backup and reset
值得注意的是,如果同一個主要谷歌帳戶用於多個設備,然後創建多個設備備份。單個設備的備份,可以從這裏訪問:
Google Drive -> Settings -> Backups
- 1. 如何刪除一個文件的卸載android應用程序?
- 2. Android 6.0 - 應用程序卸載時將刪除外部存儲文件
- 3. 如何在卸載時刪除應用程序文件夾
- 4. 如何在卸載應用程序時刪除文件
- 5. 捕獲應用程序在iPhone中刪除或卸載事件
- 6. Android - Sqlite數據庫文件在卸載應用程序時未被刪除?
- 7. Android刪除應用程序卸載小部件
- 8. 卸載msi刪除應用程序
- 9. 如何在卸載應用程序時刪除數據?
- 10. 刪除User.config在卸載程序時
- 11. android應用程序卸載保護
- 12. 如何在卸載應用程序時刪除臨時文件夾
- 13. 將數據庫保存在應用程序文件夾中,當卸載應用程序時不會清除
- 14. 刪除或更改setup.msi文件的位置後無法卸載應用程序
- 15. 外部文件夾在安裝和卸載應用程序時在SDCARD中創建和刪除
- 16. 如何在卸載黑莓應用程序時刪除文件夾
- 17. 如何在C#.NET應用程序中卸載時刪除文件夾?
- 18. 如何在卸載應用程序時從SDcard中刪除文件
- 19. 如何在卸載時從應用程序數據目錄中刪除文件?
- 20. 在卸載應用程序時刪除SQLite數據庫
- 21. 無法通過我的應用程序卸載程序刪除Windows服務創建的文件夾?
- 22. 如何在卸載應用程序時保留應用程序的文件夾和下載文件
- 23. 刪除一個文件夾,同時卸載我的應用程序,Windows 7
- 24. LocalStorage未在應用程序卸載時清除 - Android 6
- 25. 卸載應用程序圖標時,應用程序是卸載
- 26. 如何在android應用程序卸載時從sdcard中刪除數據?
- 27. 當我的應用程序在Android中卸載時,如何刪除應用程序的資產?
- 28. NSIS:卸載時刪除文件夾
- 29. 卸載時未刪除文件
- 30. 使用NISIS卸載程序創建卸載程序
應用`NQ移動Security`是在http://i.imgur.com/停靠卸載外觀的活動Fos9N.png,http://i.imgur.com/fIZbK.png,http://i.imgur.com/cG9Hr.png和問題http://stackoverflow.com/questions/10219328/how-to-顯示活動之前我的應用程序是卸載安卓 – 2012-06-16 10:23:16