是否有任何特定方法可以让系统卸载弹出窗口显示在android中的侦听器

时间:2019-04-19 05:47:26

标签: android kotlin system uninstall

我面临有关如何获取设备卸载对话框侦听器的问题,如下所示, “您要卸载此应用程序吗?” 为此,我尝试使用设备管理员管理器,但未获得所需的解决方案。如果您有任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果要阻止用户卸载您的应用程序,可以注册为Device Admin来防止卸载(用户必须注销才能能够卸载您的应用程序),here是一个示例关于如何执行此操作,我想您可以从那里限制Android Settings应用程序的打开(用户必须打开才能将您的应用程序注册为Device Admin),here的操作方法以及settings应用程序软件包名称为com.android.settings


有关如何检测应用卸载的第二个答案:

即使您拥有设备管理员权限,恐怕也没有官方方法可以检测到卸载弹出窗口,但是有一种骇人听闻的方法可以执行此操作,将其检出here,这并不完美,并且有其限制,但总比没有好。


有关如何提示卸载应用程序的原始答案:

您不需要设备管理员管理器中的内容来提示卸载应用程序,只需使用一种意图来启动您要求的卸载提示,如下所示:

Uri packageUri = Uri.parse("package:APP_PACKAGE_NAME");
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
startActivity(uninstallIntent);

注意:以上意图ACTION_UNINSTALL_PACKAGE仅在API 14(Android 4.0)之后可用,如果您的应用定位到Android P及更高版本,则必须添加权限{{3} }到您的AndroidManifest。此外,自Android Q起不推荐使用这种方法,在这种情况下,您应该像这样使用REQUEST_DELETE_PACKAGE

String packageName = "com.your.app.package";
Intent intent = new Intent(getActivity(), getActivity().getClass());
PendingIntent sender = PendingIntent.getActivity(getActivity(), 0, intent, 0);
PackageInstaller packageInstaller = getActivity().getPackageManager().getPackageInstaller();
packageInstaller.uninstall(packageName, sender.getIntentSender());

尽管有很多限制,有关详细信息,请参阅PackageInstaller.uninstall()