如何以编程方式显示“清除默认值”?

问题描述:

现在我正在开发一个主页启动器应用程序。我想清除默认的主页启动器(例如:Samsung Home)。即,我想以编程方式显示Settings-> Applications->Manage Application->Samsung Home->clear defaults如何以编程方式显示“清除默认值”?

如何通过代码显示此代码?提前

+0

你应该**不**这样做,而是要求用户做这个动作。 @DevuSoman – JoxTraex 2013-04-04 04:46:56

+0

请参阅http://*.com/questions/2828224/programmatically-unset-a-default-application – CrandellWS 2017-01-13 12:09:24

+0

我认为,如果您安装处理此意图的应用程序,操作系统会自动重置默认设置,因此如果用户选择了一个应用程序作为默认应用程序,您可以禁用并启用处理此意图的活动,并且该应用程序会再次被重置。 – 2017-01-28 07:52:58

注意

感谢:由于这个问题仅限于访问管理程序设置选项,我的回答涵盖了这一点。你将不得不找出一个获得实际包名的方法。

此外,如果想法是也通过代码自动清除默认值,那么,就我所知,无法完成。如果我错了,有人可以纠正我。

这就是说,这段代码将从您的应用程序(必须提供包名称)打开特定应用程序的管理应用程序屏幕。

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

其他职位值得一读:

  1. https://*.com/a/7750187/450534
  2. https://groups.google.com/forum/?fromgroups=#!topic/android-developers/Rzv8VU-EUAw
+1

这适用于版本> = 9 – 2013-04-04 07:56:44

+0

@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;