当我的 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>
最佳答案
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/