packageManager.queryIntentActivities(intent, 0)
如果您的应用正在运行,将返回一个EMPTY列表targetSdkVersion 30
要解决此问题,您必须<queries>
在清单中使用queryIntentActivities()
根据调用应用程序的声明进行过滤。
修复图像捕获 + 图像上传以使用 Android“范围存储”
该问题可能与新的包可见性(https://developer.android.com/about/versions/11/privacy/package-visibility)有关。在所有更新(至少是 Android Studio 4.1)之后,尝试在您的清单中添加显示您的应用需要执行的操作。
就我而言,当我
为 CAMERA添加IMAGE_CAPTURE 、为 GALLERY 添加GET_CONTENT(如果您想要视频,则获取文件更改 mimeType)、为 GALLERY 添加PICK(如果您想要视频,应该更改 mimetype)
为 GALLERY 添加选择器(如果有人有其他图像),问题就消失了浏览器)
您还可以在 logcat 中检查您必须添加哪些查询(应包含“BLOCKED”或“无权限”。错误是因为ImagePickerModule
当您在 Intent 中没有resolveActivity
返回权限时null
(您可以对其进行评论以检查更好的错误startActivityForResult
)
加入<query>
_AndroidManifest.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>
</queries>
.....
.....
</manifest>