我有一个应用程序在用于存储数据对象的 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()。这些目录中的文件存储在外部存储中,但在卸载应用程序时会自动删除。