首页 > 解决方案 > 在 API 30 中为 resolveActivity 写入清单的意图操作

问题描述

该应用程序需要让用户选择一个联系人并拍照。我正在检查用户是否有可以处理这些操作的应用程序。我知道您必须在清单文件中指定包的可见性,但是对于联系人,我不知道我必须在清单中具体写什么。我认为“android.intent.action.PICK”会是它,但它不是。

这是导致麻烦的代码

val packageManager: PackageManager = requireActivity().packageManager
val resolvedActivity: ResolveInfo? = packageManager.resolveActivity(
    pickContactIntent,
    PackageManager.MATCH_DEFAULT_ONLY
)

if (resolvedActivity == null) {
    isEnabled = false
}

这就是我在清单中的内容

<queries>
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
    <intent>
        <action android:name="android.intent.action.PICK" />
    </intent>
</queries>

标签: androidandroid-studioandroid-fragments

解决方案


如果您将清单条目更改为:

 <queries>
    <intent>
        <action android:name="android.intent.action.PICK" />
        <data android:mimeType="*/*" />
    </intent>
</queries>

推荐阅读