You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:43:10