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

android not receiving Intent ACTION_PACKAGE_REMOVED in the removed package

当我的Android应用程序被删除时,我还想删除该应用程序在SD卡上创建的文件,因为这些文件可能会消耗许多兆字节,并且只能用于我的应用程序。

似乎接收被删除的包的意图就是这样做的地方。但是,我的广播接收器从未被调用——它似乎在发送删除包的意图之前被删除了。

代码是:

1
2
3
4
5
6
7
8
public class UninstallReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action= intent.getAction();
  Log.i("U","ACTION" + action);
  etc.
 }
}

在舱单上:

1
2
3
4
5
6
7
8
9
10
 <application android:debuggable="true"
  android:icon="@drawable/icon"
  android:label="@string/app_name">

  <receiver android:name ="com.boom.UninstallReceiver">
   <intent-filter>
         
     <data android:scheme="package" />
   </intent-filter>
  </receiver>


文件上说:

The package that is being removed does not receive this Intent.

android 2.2添加了getExternalFilesDir(),它将指向外部存储上的一个位置,当卸载应用程序时,android将自动清理该位置。然而,这只适用于Android2.2,而且有迹象表明,目前它并没有特别好地工作。然而,这是2011年要记住的事情。

除此之外,您真正能做的就是在某个地方为用户提供一个菜单选项来进行清理,并希望用户在卸载您之前使用它。


您必须在manifast中添加权限。

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