Pre*_*ari 3 android android-intent kotlin 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)
}
Run Code Online (Sandbox Code Playgroud)
packageManager.queryIntentActivities(intent, 0)如果您的应用程序正在运行targetSdkVersion 30以解决您必须在清单中使用的此问题,则将返回 EMPTY 列表<queries>,因为queryIntentActivities()根据调用应用程序的声明进行过滤。
修复图像捕获 + 图像上传以使用 Android“范围存储”
该问题可能与新的包可见性(https://developer.android.com/about/versions/11/privacy/package-visibility)有关。在所有更新(至少 Android Studio 4.1)之后,尝试在您的清单中添加显示应用程序中需要什么操作的清单。在我的情况下,添加时问题就会消失。
IMAGE_CAPTURE对于摄像机,GET_CONTENT图库(获取文件夹改变mime类型,如果你想视频),PICK图库(应该改变MIME类型如果u想视频) CHOOSER图库(如果有人有其他的图像浏览器)
您还可以在 logcat 中检查您必须添加哪些查询(应包含“BLOCKED”或“无权限”。错误是因为ImagePickerModule当您在 Intent 中没有权限并resolveActivity返回时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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |