android - queryIntentActivities 在 android 11 中返回空列表

标签 android kotlin android-intent android-11

我正在尝试从我的应用程序中打开 Gmail(单击按钮)。我只在 android 11 中遇到问题。它没有打开 Gmail。在这种情况下,queryIntentActivities 返回空列表。
请帮助我如何解决 android 11 的这个问题。
下面是我正在使用的代码..

 val pkgManager = aContext.packageManager
            val packages = pkgManager.queryIntentActivities(intent, 0)
            if (!packages.isEmpty()) {
                for (resolveInfo in packages) {
                    val packageName = resolveInfo.activityInfo.packageName
                    aEmailClientNames.add(resolveInfo.loadLabel(aContext.packageManager).toString())
                    aEmailClientIcons.add(resolveInfo.loadIcon(aContext.packageManager))
                    aEmailClientPackageNames.add(packageName)
                }

最佳答案

packageManager.queryIntentActivities(intent, 0) will return EMPTY list if your app is running on targetSdkVersion 30 to resolved this issue you have to use <queries> in menifest as queryIntentActivities(), are filtered based on the calling app's declaration.


修复图像捕获 + 图像上传以使用 Android“范围存储”
该问题可能与新的包可见性 (https://developer.android.com/about/versions/11/privacy/package-visibility) 有关。
在所有更新(至少 Android Studio 4.1)之后,尝试在您的 list 中添加显示应用程序需要执行的操作。
在我的情况下,添加时问题消失了。
图像捕捉 用于相机,获取内容对于 GALLERY(如果需要视频,获取文件更改 mimeType),选择 对于 GALLERY(如果你想要视频,应该改变 mimetype)
选择 对于 GALLERY(如果有人有其他图像浏览器)
您还可以在 logcat 中检查您必须添加哪些查询(应该包含“BLOCKED”或“no permission”。
错误是因为 ImagePickerModule当您没有 resolveActivity 的 Intent 权限时返回 null (您可以评论它以检查 startActivityForResult 中更好的错误)
添加 <query>AndroidMenifest.xml
<manifest>
.....
.....
<queries>
    <!-- Browser -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="http" />
    </intent>
    <!-- Camera -->
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
    <!-- Gallery -->
    <intent>
        <action android:name="android.intent.action.GET_CONTENT" />
        <data android:mimeType="image/*" />
    </intent>
    <intent>
        <action android:name="android.intent.action.PICK" />
        <data android:mimeType="image/*" />
    </intent>
    <intent>
        <action android:name="android.intent.action.CHOOSER" />
     </intent>

     <!--For external application-->
     <package android:name="com.whatsapp" />
</queries>
.....
.....
</manifest>

关于android - queryIntentActivities 在 android 11 中返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65629268/

相关文章:

android - fragment 内异步任务中的空指针异常

reactjs - 如何将 SVG 与 kotlin-react 结合使用

java.lang.NoClassDefFoundError : kotlin/jvm/internal/Intrinsics in libgdx 错误

reflection - 如何在 Kotlin 中获取变量的运行时类?

java.lang.NullPointerException : (ListFragment)

android - 获取 TimePickerDialog 内的上下文

android - 从远程服务运行 Activity

android - 从 Android 设备与外部 MIDI 设备通信

android - 在 MainActivity 中激活 SQLiteHandler

android - 通过 Intent 启动第三方应用程序,同时屏幕关闭且手机被锁定