3

现在我正在开发 Home Launcher 应用程序。我想清除默认 Home Launcher(例如:Samsung Home)的默认设置。即。我想以Settings-> Applications->Manage Application->Samsung Home->clear defaults编程方式显示。

如何通过代码显示这一点?

提前致谢

4

2 回答 2

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 Maps 应用程序的包名称是com.google.android.apps.maps,则替换THE_APP_PACKAGE_NAME为它,代码将打开 Google Maps 应用程序的管理应用程序屏幕。

更新:

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
于 2013-04-04T04:23:44.360 回答
0

只是为了完成图片,为了获得“THE_APP_PACKAGE_NAME”,你可以使用类似的东西:

 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;
于 2014-11-12T15:30:14.370 回答