gpt4 book ai didi

android - 过滤具有权限要求的 Activity

转载 作者:太空狗 更新时间:2023-10-29 14:48:26 25 4
gpt4 key购买 nike

我正在尝试让用户选择我的应用程序应向其发送特定 Intent 的应用程序。要获取候选人列表,queryIntentActivities() 大部分都有效,除了一些应用程序定义了具有 permission 要求的接受 Activity ,所以我无法真正启动它们。那么,我可以通过这些方式中的任何一种过滤掉它们吗?

  • PackageManager 帮我过滤掉它们。
  • ResolveInfo 中,检查 Activity (或其父应用程序)是否需要权限,以便我可以使用 checkSelfPermission() 检查它。
  • 启动 Activity 选择器(从 Android 4.1 开始过滤它们)并以某种方式获取选择的 Activity 。

最佳答案

API 级别 22 的版本为 createChooser()这让您可以使用系统 Activity 选择器并在广播中接收所选 Activity 。

在旧版本中,以下方法有效:

List<ResolveInfo> candidates = pm.queryIntentActivities(intent, 0);
for (int i = candidates.size() - 1; i >= 0; --i) {
ResolveInfo resolveInfo = candidates.get(i);
String permission = resolveInfo.activityInfo.permission;
if (permission == null)
permission = resolveInfo.activityInfo.applicationInfo.permission;
if (permission != null && ContextCompat.checkSelfPermission(this, permission)
!= PackageManager.PERMISSION_GRANTED)
candidates.remove(i);
}

关于android - 过滤具有权限要求的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com