当我的Android应用程序被删除时,我还想删除应用程序在SD卡上创建的文件,因为这些文件可能消耗很多兆字节,并且仅用于我的应用程序。
似乎接收PACKAGE REMOVED意图将是执行此操作的地方。 但是,我的广播接收器从未被调用 - 它似乎在发送PACKAGE REMOVED意图之前已被删除
代码是:
public class UninstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action= intent.getAction(); Log.i("U", "ACTION " + action); etc. } }
并且,在清单中:
<application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name ="com.boom.UninstallReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package" /> </intent-filter> </receiver>
答案 0 :(得分:13)
正在删除的包不会收到此Intent。
Android 2.2添加了getExternalFilesDir()
,它将指向外部存储上的一个位置,Android将在您卸载应用程序时自动清理。但是,这仅适用于Android 2.2,并且有迹象表明它目前效果不佳。但是,2011年需要牢记这一点。
除此之外,您所能做的就是为用户提供一个菜单选项供用户进行清理,并希望用户在卸载之前使用它。
答案 1 :(得分:-5)
您必须在剧集中添加权限。
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />