Android 14设备中resolveActivity返回null的问题求助
Android 14上调用相机Intent时resolveActivity返回null的解决方法
问题出在你代码里针对Android 14+添加的错误逻辑:
if(Build.VERSION.SDK_INT>33){ takePictureIntent.setPackage(context.getPackageName()); }
你把Intent的处理包限定成了自己的应用,但你的APP并没有实现处理android.media.action.IMAGE_CAPTURE的Activity,自然找不到可处理的组件,导致resolveActivity返回null。
你Manifest里的<queries>配置是正确的,已经声明了对相机Intent的查询权限,不需要修改。
直接移除这段错误的包名限定代码即可解决问题,修改后的方法如下:
private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 移除错误的setPackage逻辑,让系统自动匹配支持相机的应用 if (takePictureIntent.resolveActivity(getPackageManager()) != null) { File photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { ex.printStackTrace(); } if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(this, "com.ft.fifthwheel.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivityForResult(takePictureIntent, REQUEST_CAMERA); } } }
如果你的需求是指定特定相机应用(比如系统默认相机),可以通过PackageManager查询支持IMAGE_CAPTURE的应用包名后再设置,但通常不需要额外限定,让系统自动选择用户偏好的相机应用即可。
内容的提问来源于stack exchange,提问作者Zarar Mahmud
相关产品推荐
相关产品推荐

