我在服务中使用以下代码运行后台来获取预卸载事件,但是它调用了我不需要的所有应用程序。我只想要我的申请活动。
实施例: 我的申请“A” 其他应用“B”,“C”......
当尝试卸载“A”应用程序时,我想要预卸载事件。
但当前代码返回其他应用程序的预卸载事件,如“B”,“C”......
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = mActivityManager
.getRunningTasks(10);
String activityName = taskInfo.get(0).topActivity
.getClassName();
Log.d("topActivity", "CURRENT Activity ::" + activityName);
if (activityName
.equals("com.android.packageinstaller.UninstallerActivity")) {
// User has clicked on the Uninstall button under the Manage
// Apps settings
// do whatever pre-uninstallation task you want to perform
Toast.makeText(getApplicationContext(),
"warning!!! You are not supposed to uninstall",
Toast.LENGTH_SHORT).show();
if (!mIntimation) {
startIntimate();
mIntimation = true;
}
} else {
mIntimation = false;
}
感谢。
答案 0 :(得分:0)
你可以使用它。
How to receiving broadcast when application installed or removed
同时检查http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_REMOVED
答案 1 :(得分:0)
在android中,应用程序无法通知应用程序正在卸载。你无法检查你的应用程序是否要卸载。
当用户卸载应用程序时,首先会终止该进程,然后删除您的APK文件和数据目录以及程序包管理器中的记录。
您可以参考此link进行确认。
您的应用程序无法知道它正在被卸载(不修改内核)。卸载时会自动删除data / data / your.app.package中创建的所有文件。
我能想到的另一种选择:
您可以使用另一个应用程序来检查您的第一个应用程序是否已安装。如果没有,它可以在卸载App时执行您想做的任何事情。