Android:广播接收器:UNINSTALL_PACKAGE 意图
Android: BroadcastReceiver: UNINSTALL_PACKAGE intent
我需要检测我的应用何时被卸载。为此,我看到 logcat 发出了 UNINSTALL_PACKAGE 意图,我只是将它添加到现有的广播接收器中。但它就是没有捕捉到它,而我正在收听的其他意图 TIME_TICK 却完美无缺。为什么?
当前使用的代码:
private IntentFilter intentFilter;
static {
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_UNINSTALL_PACKAGE);
}
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_UNINSTALL_PACKAGE) {
Log.e("App", "Uninstalling");
} else if (action.equals(Intent.ACTION_TIME_TICK){
// this works
}
}
};
I need to detect when my app is being uninstalled
出于明显的安全原因,没有支持的方法来执行此操作。
But it just doesn't catch it
ACTION_UNINSTALL_PACKAGE
is an activity action。 Android 设备上的任何内容都不应将其作为广播发送。因此,您无法通过 BroadcastReceiver
.
收听它
I 've seen logcat sends out UNINSTALL_PACKAGE intent, and I simply added it to existing Broadcast Reciever I have. But it just doesn't catch it, while other intent I'm listening to, TIME_TICK, works perfectly. Why?
无论何时卸载您的应用程序,Android OS 都会终止与该应用程序关联的所有组件以及释放内存和资源。 Uninstall
广播接收器的意图是监听其他应用程序的卸载事件,而不是针对您的应用程序。
如果您想捕获应用程序的 uninstall
事件,则没有 google 提供的概念,但是您可以通过观察文件系统中的数据变化来实现,您需要在其中持续监控变化在文件系统中。
此解决方案不适用于所有手机和不同版本的 Android。
当您使用 ACTION_DELETE
或 ACTION_UNINSTALL_PACKAGE
卸载时,您不能只用 IntentFilter 监听 android.intent.action.PACKAGE_REMOVED
吗?
我需要检测我的应用何时被卸载。为此,我看到 logcat 发出了 UNINSTALL_PACKAGE 意图,我只是将它添加到现有的广播接收器中。但它就是没有捕捉到它,而我正在收听的其他意图 TIME_TICK 却完美无缺。为什么?
当前使用的代码:
private IntentFilter intentFilter;
static {
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_UNINSTALL_PACKAGE);
}
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_UNINSTALL_PACKAGE) {
Log.e("App", "Uninstalling");
} else if (action.equals(Intent.ACTION_TIME_TICK){
// this works
}
}
};
I need to detect when my app is being uninstalled
出于明显的安全原因,没有支持的方法来执行此操作。
But it just doesn't catch it
ACTION_UNINSTALL_PACKAGE
is an activity action。 Android 设备上的任何内容都不应将其作为广播发送。因此,您无法通过 BroadcastReceiver
.
I 've seen logcat sends out UNINSTALL_PACKAGE intent, and I simply added it to existing Broadcast Reciever I have. But it just doesn't catch it, while other intent I'm listening to, TIME_TICK, works perfectly. Why?
无论何时卸载您的应用程序,Android OS 都会终止与该应用程序关联的所有组件以及释放内存和资源。 Uninstall
广播接收器的意图是监听其他应用程序的卸载事件,而不是针对您的应用程序。
如果您想捕获应用程序的 uninstall
事件,则没有 google 提供的概念,但是您可以通过观察文件系统中的数据变化来实现,您需要在其中持续监控变化在文件系统中。
此解决方案不适用于所有手机和不同版本的 Android。
当您使用 ACTION_DELETE
或 ACTION_UNINSTALL_PACKAGE
卸载时,您不能只用 IntentFilter 监听 android.intent.action.PACKAGE_REMOVED
吗?