2012-10-20 103 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()刪除。這些目錄中的文件存儲在外部存儲器中,但在卸載應用程序時會自動刪除。