如何知道我的应用程序的卸载

时间:2015-03-21 01:01:55

标签: android performance android-intent android-activity

我在服务中使用以下代码运行后台来获取预卸载事件,但是它调用了我不需要的所有应用程序。我只想要我的申请活动。

实施例: 我的申请“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;
            }

感谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在android中,应用程序无法通知应用程序正在卸载。你无法检查你的应用程序是否要卸载。

当用户卸载应用程序时,首先会终止该进程,然后删除您的APK文件和数据目录以及程序包管理器中的记录。

您可以参考此link进行确认。

您的应用程序无法知道它正在被卸载(不修改内核)。卸载时会自动删除data / data / your.app.package中创建的所有文件。

我能想到的另一种选择:

您可以使用另一个应用程序来检查您的第一个应用程序是否已安装。如果没有,它可以在卸载App时执行您想做的任何事情。