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

时间:2013-04-04 04:08:40

标签: android settings default clear

现在我正在开发Home Launcher应用程序。我想清除默认主启动器的默认值(例如:Samsung Home)。 ie.I想以编程方式显示Settings-> Applications->Manage Application->Samsung Home->clear defaults

如何通过代码展示?

先谢谢

2 个答案:

答案 0 :(得分:6)

注意: 由于此问题仅限于访问“管理应用程序设置”选项,因此我的答案仅涵盖该问题。您必须找到获取实际包名称的方法。

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

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

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

例如,如果Google地图应用程序的软件包名称为com.google.android.apps.maps,则用它替换THE_APP_PACKAGE_NAME代码将打开Goog​​le的管理应用程序屏幕地图应用程序。

<强>更新

PackageManager有一个方法,clearPackagePreferredActivities用于清除默认的通过代码。但是,并不似乎适用于较新的Android版本:https://stackoverflow.com/a/10246711/450534

其他值得一读的帖子:

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

答案 1 :(得分:0)

只是为了完成图片,获得n#34; THE_APP_PACKAGE_NAME n#34;你可以使用类似的东西:

 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;