1、使用场景: 在App中调用系统相机进行拍照并设置图片。
问题描述:在目标SDK版本大于等于Android 11的情况下,以下代码`captureIntent.resolveActivity(context.getPackageManager())`返回了null。
```java
// 拉起系统相机的Intent
Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// 判断相机是否正常
if (captureIntent.resolveActivity(context.getPackageManager()) != null) {
// ...
}
// 系统环境:Android 11,targetSdkVersion == 33
``` 4、解决方案:
4、可行的解决方案:
(1)使用系统应用时:
(2)调用系统应用:
(3)当需要调用系统应用时:
(4)在使用系统应用的情况下:
(5)执行系统应用操作时:
方案1:在清单文件中添加queries标签。
如果 (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
// 相机可用
} else {
// 打开其他第三方app,比如:
} Android 11 版本引入了许多变更,旨在加强用户的隐私保护。以下是一些相关的变更内容:
- 微信支付SDK:``
- 支付宝支付SDK:``
- 支付宝钱包SDK:``
- 百度地图app:``
- 高德地图app:``
- 腾讯地图app 请访问以下链接了解有关系统包自动可见性的更多信息:https://developer.android.com/training/basics/intents/package-visibility#system-packages-visible-automatically