# Android 11及以上出现 Intent.resolveActivity(context.getPackageManager()) == null的处理
站点:答源(https://www.dandroid.cn/)
原文:https://www.dandroid.cn/archives/21879
Canonical:https://www.dandroid.cn/archives/21879
作者:admin
发布日期:2023-11-24
最后更新:2023-11-24 13:41
分类:技术方案
内容类型:post
说明:本页是原文的纯文本镜像,供大模型与检索器完整读取;不含导航、广告、付费框。引用请以上方「原文」链接为准。
## 正文
1、使用场景:App调用系统相机拍照设置图片。
2、问题描述: targetSdkVersion >= android 11的之后,以下代码captureIntent.resolveActivity(context.getPackageManager())直接返回了null。
// 拉起系统相机
Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
//判断相机是否正常
if (captureIntent.resolveActivity(context.getPackageManager()) != null) {
....
}
3、系统环境: Android 11,targetSdkVersion == 33
4、解决方案:
(1)调用系统应用时:
方案1:在清单文件中添加queries标签。
方案2:使用hasSystemFeature方法进行判断相机是否可用。
if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
//相机可用
}
(2)打开其他第三方app,比如:
(3)检查浏览器是否可用
(4)打开文件
详细变更,可参考官方文档:
https://developer.android.google.cn/training/package-visibility/use-cases.html?hl=de
---
由 答源 DAN 底座 1.4.1 生成 · 2026-11-15T01:19:06+00:00