我有一个应用程序,它在用于存储数据对象的SD卡中写入一些文件。当用户删除应用程序或更新应用程序时,这些文件将保留在SD中,并且不会被apk删除。如果我更改了我的应用程序的数据管理结构,这可能会导致一些恼人的问题,真的很难修复只是检查这些数据文件是否已经出于各种原因而存在。
有没有办法告诉Android操作系统在未经用户手动干预的情况下取消或更新应用程序时还删除这些文件?
答案 0 :(得分:1)
对于更新案例,是的。实现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
会触发,因此您没有机会清理。< / p>
答案 1 :(得分:1)
当用户删除应用程序或应用程序更新时,这些文件仍保留在SD中,并且不会被apk删除
然后您应该将它们存储在getExternalFilesDir()
或getExternalCacheDir()
中。这些目录中的文件存储在外部存储器中,但在卸载应用程序时会自动删除。