【问题标题】:How to show 'Clear Defaults' programmatically?如何以编程方式显示“清除默认值”?
【发布时间】:2013-03-26 00:06:43
【问题描述】:

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

如何通过代码显示?

提前致谢

【问题讨论】:

  • 您应该执行此操作,而应要求用户执行该操作。 @DevuSoman
  • 我认为如果你安装了一个处理这个意图的应用程序,操作系统会自动重置默认值,所以即使在那之后,用户选择了一个应用程序作为默认值,你可以禁用&启用该活动处理此意图,并将再次重置。

标签: android settings default


【解决方案1】:

只是为了完成图片,为了获得“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;

【讨论】:

    【解决方案2】:

    注意: 由于此问题仅限于访问“管理应用程序设置”选项,因此我的回答仅涵盖这一点。您必须想办法获取实际的包名称。

    另外,如果这个想法也是通过代码自动清除默认值,那么据我所知,这是无法做到的。如果我在这方面错了,有人可以纠正我。

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

    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

    【讨论】:

    • @DevuSoman:哦。凉爽的。从来不需要那个特定的部分,所以不知道。谢谢。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多