Daniel HuangTue, Dec 5, 2023 6:13 PM
本文同步發表在 DH 開發筆記
前陣子剛好海巡到 一則 iT 邦幫忙上的技術提問,大略找了一下資料,發現實作細節不難就順手回了一下。對方最後成功地完成他預期的需求,很高興能夠幫到對方的忙~
提問問題如下:
App 需要新增一個刪除帳號的功能,需求方期望按下刪除鈕後,App 能夠回到初始安裝的狀態。等同於用戶直接到手機系統設定的應用程式清單中,按下清除資料。
根據文件的說明,呼叫 ActivityManager.clearApplicationUserData()
等同使用者於設定中按下清除資料。
val activityManager = application.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
activityManager.clearApplicationUserData()
📢 注意: 呼叫此方法後 App 會強制退出,使用者需要自行重新開啟 App。
透過 Runtime
執行 ADB 指令 pm clear packageName
。
Runtime.getRuntime().exec("pm clear ${applicationContext.packageName}")
Reference: StackOverflow: Clear Application's Data Programmatically
💡 延伸討論: 開發過程中完整清除 App 資料
有時候在開發或測試 App 的時候,也會需要還原 App 的初始狀態。
這時候可以改在 ADB 環境下,執行前述 Runtime
執行的清除指令。
adb shell pm clear packageName
Reference: StackOverflow: Clear android application user data
// 內部儲存空間
cacheDir.deleteRecursively()
// 外部儲存空間
externalCacheDir?.deleteRecursively()
Reference: StackOverflow: Clear Cache in Android Application programmatically