2012-10-20 73 views
0

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

有没有办法让Android操作系统也删除这些文件,当应用程序unistalled或更新没有用户的手动干预?

回答

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与行动火灾应用程序被删除,所以你没有机会清理。

1

当用户删除应用程序或应用程序的更新,这些文件保留在SD和不与APK

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