0

我有一个应用程序在用于存储数据对象的 SD 卡中写入一些文件。当用户删除应用或更新应用时,这些文件仍保留在 SD 中,不会随 apk 一起删除。如果我更改应用程序的数据管理结构,这可能会导致一些烦人的问题,仅检查这些 dat 文件是否由于各种原因已经存在,真的很难解决。

当应用程序未安装或更新而无需用户手动干预时,有没有办法让 Android 操作系统也删除这些文件?

4

2 回答 2

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会触发该动作,因此您没有机会进行清理。

于 2012-10-20T01:02:19.180 回答
1

当用户删除应用或更新应用时,这些文件仍保留在 SD 中,不会被 apk 删除

那么你应该将它们存储在getExternalFilesDir()or中getExternalCacheDir()。这些目录中的文件存储在外部存储中,但在卸载应用程序时会自动删除。

于 2012-10-20T10:55:05.017 回答