Android 11及以上出现 Intent.resolveActivity(context.getPackageManager()) == null的处理

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 11targetSdkVersion == 33

4、解决方案:

(1)调用系统应用时:

方案1:在清单文件中添加queries标签。


	
    
        
            
        

        
            
        
        

方案2:使用hasSystemFeature方法进行判断相机是否可用。

if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
	//相机可用
}

(2)打开其他第三方app,比如:


    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

详细变更,可参考官方文档:

https://developer.android.com/training/basics/intents/package-visibility#system-packages-visible-automatically

你可能感兴趣的:(Android,Android,Studio,Android11,android,Android11,Android版本,android,studio)