【问题标题】:How to launch App Info for a android package如何为 android 包启动 App Info
【发布时间】:2021-04-17 23:24:24
【问题描述】:
Intent intent_as = new Intent(
                    android.provider.Settings.ACTION_APPLICATION_SETTINGS);

            startActivity(intent_as);

使用上面的代码,我可以得到一个安装了应用程序列表的屏幕。如何进入所选应用的应用信息页面。

基本上应该是向意图(包名称)添加一些额外的数据,但我无法找到一种方法来做到这一点?

在 android 中是否正确记录了任何地方

【问题讨论】:

  • 您应该使用 android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS 而不是 android.provider.Settings.ACTION_APPLICATION_SETTINGS ,并将您的应用程序的包名称设置为 Data 的意图。请参阅下面的答案
  • 我正在使代码与 2.2 兼容,因此 ACTION_APPLICATION_DETAILS_SETTINGS 不会在那里工作

标签: android


【解决方案1】:

您应该使用 android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS 而不是 android.provider.Settings.ACTION_APPLICATION_SETTINGS ,并将应用的 包名称 设置为 Intent 的 Data。

试试这个:

//redirect user to app Settings
Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + getPackageName()));
startActivity(i);

【讨论】:

  • 出现以下错误:线程 [ main](挂起(异常 ActivityNotFoundException)) Instrumentation.checkStartActivityResult(int, Object) 行:1536 Instrumentation.execStartActivity(Context , IBinder, IBinder, Activity, Intent, int) line: 1388 MainActivity(Activity).startActivityForResult(Intent, int) line: 3195 MainActivity(Activity).startActivity(Intent) line: 3302 MainActivity.onClick(View) line: 302 Button (查看).performClick() 行:3571 查看$PerformClick.run() 行:14247
  • 这行得通吗?你也可以打开其他应用程序信息吗? - 当然,如果你知道包名
  • 我刚刚尝试过,它可以工作,你的目标是哪个 api 级别?你传递意图的包名称是什么?尝试使用方法 getPackageName() 或验证您的包名称,如果您将其作为字符串传递(如“com.company.myapp”)
  • android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS 是在 api 级别 9 (Android 2.3 FROYO) 中添加的,所以如果您的 minSdkVersion
  • @gunar : 是的,你可以,当然你应该知道要打开其设置的应用程序的 packageName
【解决方案2】:

我为 SDK R (30) - Android 11 测试它 这样您就可以使用 Settings.ACTION_APPLICATION_DETAILS_SETTINGS 并将应用程序的包名称设置为 Intent 的 Data。

Intent intent = new Intent();
   intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
   Uri uri = Uri.fromParts("package", this.getPackageName(), null);
   intent.setData(uri);
   startActivity(intent);

如果您想访问应用权限

 intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2020-12-19
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多