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

标签 android android-intent package broadcastreceiver

当我的 Android 应用程序被删除时,我还想删除该应用程序在 SD 卡上创建的文件,因为这些文件会占用许多兆字节并且仅对我的应用程序有用。

似乎接收 PACKAGE REMOVED Intent 是执行此操作的地方。 但是,我的广播接收器从未被调用——它似乎在发送 PACKAGE REMOVED Intent 之前已被删除

代码是:

public class UninstallReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action= intent.getAction();
  Log.i("U", "ACTION " + action);
  etc.
 }
}

并且,在 list 中:

 <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>

最佳答案

documentation说:

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

Android 2.2 添加了 getExternalFilesDir(),它将指向外部存储上的一个位置,当您的应用程序被卸载时,Android 将自动清理该位置。但是,这仅适用于 Android 2.2,而且有迹象表明目前它的运行效果不是特别好。然而,2011 年需要牢记这一点。

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

关于android 在删除的包中没有收到 Intent ACTION_PACKAGE_REMOVED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648166/

相关文章:

android - 如何在抽屉导航布局中添加图像标题

android - 哪个 Intent 应该打开数据使用屏幕(来自设置)

java - Gradle包资源分布

java - 安卓加载动画

java - 如何从Firebase Firestore实时更新文档中获取修改后的字段或数据?

android - 设置和显示动态列表

java - Android-如何将数据从 Activity 发送到服务?

java - “public”函数公开其 'public/*package*/' 参数类型 SolarEdgeException

r - Debian 上的 R 中未加载依赖包

android - ListView 内的 ScrollView