首页 文章

android没有在被删除的包中接收Intent ACTION_PACKAGE_REMOVED

提问于
浏览
9

当我的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>

2 回答

  • -5

    documentation说:

    正在删除的包不会收到此Intent .

    Android 2.2添加了 getExternalFilesDir() ,它将指向外部存储上的一个位置,Android将在您卸载应用程序时自动清理 . 但是,这仅适用于Android 2.2,并且有迹象表明它目前效果不佳 . 但是,2011年需要牢记这一点 .

    除此之外,您所能做的就是为用户提供一个菜单选项供用户进行清理,并希望用户在卸载之前使用它 .

  • 13

    您必须在showast中添加权限 .

    <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
    

相关问题