当您使用Intent.ACTION_DELETE时,如何判断用户是否实际卸载了应用程序?

时间:2014-05-15 23:37:09

标签: android uninstall android-package-managers

这是我的代码

Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(Uri.parse("package:" + theApp.getAppOpen()));
startActivity(intent);

调用startActivity时,会出现一个默认提示,询问用户是否要卸载该应用。

如何判断用户是否说“ok”卸载应用程序? 假设我的应用程序不是正在卸载的应用程序。

3 个答案:

答案 0 :(得分:3)

您有两种选择,您可能希望使用两者的组合:

1)为ACTION_PACKAGE_REMOVED注册BroadcastReceiver,一旦触发,您可以检查意图的data,以查看您的包是否已被删除。添加一个类型的超时可能是明智的,可能通过将来五分钟的警报设置。

2)一旦用户从卸载或取消卸载返回,您的活动将恢复。您可以使用PackageManager.getPackageInfo()或类似信息检查onResume()中感兴趣的包是否仍然存在。注意:用户可能无法返回您的应用程序,在这种情况下,超时/警报建议将变得非常重要。

答案 1 :(得分:3)

我认为您可以使用" ACTION_UNINSTALL_PACKAGE"意图(API 14及更高版本),以便您可以检查卸载是否成功。

文档说:

  

活动操作:启动应用程序卸载程序。

     

输入:数据必须是包:方案特定部分为的URI   要卸载的当前已安装软件包的软件包名称。   您可以选择提供EXTRA_RETURN_RESULT。

     

输出:如果是EXTRA_RETURN_RESULT,则返回安装是否成功。

     

常量值:" android.intent.action.UNINSTALL_PACKAGE"

答案 2 :(得分:0)

可能已经晚了,但是您可以使用startActivityForResult(removeIntent, 0) 第一步,然后执行任何操作(无论是否卸载),都会调用onActivityResult方法,因此,对于第二步,您可以签入onActivityResult,此应用程序现在是否存在。请遵循此以获取第二步的更多详细信息: [Check if application is installed - Android