我正面临着如何获取设备卸载对话框监听器的问题,如下所示,“你想要卸载这个应用程序吗?”为此,我尝试了设备管理员管理器,但没有得到所需的解决方案。如果您的任何帮助将得到更多的赞赏。
如果你想阻止用户卸载你的应用程序,你可以注册为Device Admin以防止卸载(用户必须取消注册以便能够卸载你的应用程序),here是一个如何做到这一点的例子,从那里我想你可以限制Android设置应用程序的打开(用户必须打开以取消注册您的应用程序作为设备管理员),here的方法如何,设置应用程序包名称是com.android.settings
。
关于如何检测app卸载的第二个答案:
我担心没有正式的方法来检测卸载弹出窗口,即使你有设备管理员权限,但有一种hacky方式来做它,检查它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及更高版本,则必须将权限REQUEST_DELETE_PACKAGE添加到您的AndroidManifest
。此外,自Android Q以来,这个意图已被弃用,在这种情况下你应该像这样使用PackageInstaller.uninstall()
:
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());
但是有一大堆限制,详情请参考documentation。