如何以编程方式显示“清除默认值”?
现在我正在开发一个主页启动器应用程序。我想清除默认的主页启动器(例如:Samsung Home)。即,我想以编程方式显示Settings-> Applications->Manage Application->Samsung Home->clear defaults
。如何以编程方式显示“清除默认值”?
如何通过代码显示此代码?提前
注意
感谢:由于这个问题仅限于访问管理程序设置选项,我的回答涵盖了这一点。你将不得不找出一个获得实际包名的方法。
此外,如果想法是也通过代码自动清除默认值,那么,就我所知,无法完成。如果我错了,有人可以纠正我。
这就是说,这段代码将从您的应用程序(必须提供包名称)打开特定应用程序的管理应用程序屏幕。
Intent showSettings = new Intent();
showSettings.setAction(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uriAppSettings = Uri.fromParts("package", "THE_APP_PACKAGE_NAME", null);
showSettings.setData(uriAppSettings);
startActivity(showSettings);
例如,如果谷歌地图应用程序的包名是com.google.android.apps.maps
,替换THE_APP_PACKAGE_NAME
与它的代码将打开管理应用程序屏幕的谷歌地图应用程序。
UPDATE:
的PackageManager具有用于清除通过代码的缺省的方法,clearPackagePreferredActivities。然而,不似乎较新的Android版本的工作:https://*.com/a/10246711/450534
其他职位值得一读:
这适用于版本> = 9 – 2013-04-04 07:56:44
@DevuSoman:哦。凉。从来不需要那个特定的部分,所以不知道。谢谢。 ;-) – 2013-04-04 08:09:29
只是为了完成图片,为获得“THE_APP_PACKAGE_NAME”youc可以使用类似这样的内容:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String packageName = resolveInfo.activityInfo.packageName;
你应该**不**这样做,而是要求用户做这个动作。 @DevuSoman – JoxTraex 2013-04-04 04:46:56
请参阅http://*.com/questions/2828224/programmatically-unset-a-default-application – CrandellWS 2017-01-13 12:09:24
我认为,如果您安装处理此意图的应用程序,操作系统会自动重置默认设置,因此如果用户选择了一个应用程序作为默认应用程序,您可以禁用并启用处理此意图的活动,并且该应用程序会再次被重置。 – 2017-01-28 07:52:58