我有一个应用程序在用于存储数据对象的 SD 卡中写入一些文件。当用户删除应用或更新应用时,这些文件仍保留在 SD 中,不会随 apk 一起删除。如果我更改应用程序的数据管理结构,这可能会导致一些烦人的问题,仅检查这些 dat 文件是否由于各种原因已经存在,真的很难解决。
当应用程序未安装或更新而无需用户手动干预时,有没有办法让 Android 操作系统也删除这些文件?
我有一个应用程序在用于存储数据对象的 SD 卡中写入一些文件。当用户删除应用或更新应用时,这些文件仍保留在 SD 中,不会随 apk 一起删除。如果我更改应用程序的数据管理结构,这可能会导致一些烦人的问题,仅检查这些 dat 文件是否由于各种原因已经存在,真的很难解决。
当应用程序未安装或更新而无需用户手动干预时,有没有办法让 Android 操作系统也删除这些文件?
对于更新案例,是的。实现一个BroadcastReceiver
子类...
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if (intent.getData().equals(Uri.parse("package:<YOUR APP'S PACKAGE>"))) {
// Clean up for the new app install
}
}
}
...然后<receiver>
在清单中添加一个标签:
<receiver android:name =".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
还有一个PACKAGE_REMOVED
动作,但是在删除应用程序后Intent
会触发该动作,因此您没有机会进行清理。
当用户删除应用或更新应用时,这些文件仍保留在 SD 中,不会被 apk 删除
那么你应该将它们存储在getExternalFilesDir()
or中getExternalCacheDir()
。这些目录中的文件存储在外部存储中,但在卸载应用程序时会自动删除。