当前位置: 首页 > 知识库问答 >
问题:

“需要Android:Camera”拍照失败

禹昆
2023-03-14
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photoPath = new File(getExternalFilesDir(null), "postcard.jpg");
takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.fromFile(photoPath));
log.debug("start camera for {}", photoPath.getAbsolutePath());
startActivityForResult(takePhotoIntent, REQUEST_TAKE_PHOTO);

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_TAKE_PHOTO) {
        if (resultCode == RESULT_OK) {
            log.debug("photo successfully created");
        } else {
            log.error("problem to take photo resultCode={}", resultCode);
        }
    } else {
        log.debug("not my request: {}", requestCode);
    }
}

这在Android5上很好,但在Android6上失败,因为resultcode=0(RESULT_CANCELED)和logcat错误消息

03-09 07:56:13.759 878-3735/?W/ActivityManager:Appop拒绝:起始意图{act=android.media.action.image_capture flg=0x3 cmp=com.google.android.googlecamera/com.android.camera.captureActivity clip={text/uri-list u:file:///storage/emulated/0/android/data/censored.package.name.here/u0a136}ProcessRecord{55cce35 21309:censored.package.name.u0a136}

我在Android清单中有以下内容:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

我还检查应用程序是否真的有相机权限,这一检查通过。

checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED

同样值得注意的是,我在项目中包括了一个aar也使用相机。这个包含的库在清单中有以下内容:

<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
<uses-feature android:name="android.hardware.screen.landscape" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false"/>

到目前为止,我还没有成功地用一个小例子再现这个问题。这似乎是与另一个应用程序部分的一些交互。

共有1个答案

汪典
2023-03-14

经过一天多的实验和调试,它现在可以工作了。代码还是完全一样。

我想,通过设置收回相机权限,然后重新启用它,但我不完全确定。

如果有人遇到同样的问题,请将此作为答案发布。

 类似资料:
  • 本文向大家介绍Android 拍照,包括了Android 拍照的使用技巧和注意事项,需要的朋友参考一下 示例 向AndroidManifest文件添加访问摄像头的权限: Xml文件: 活动            

  • 可使用前端相机或背面相机拍摄照片。 A ) (显示模式) 轻触图标可切换为显示模式。 B ) (位置数据)/(切换相机)/(切换图像大小) 启用位置数据的使用设定即可显示(位置数据)。轻触图标可使用Wi-Fi、GPS*、手机基地台*的信息取得位置数据。取得后会显示(已取得位置数据),拍摄照片时会同时记录位置数据。 * 仅限3G/Wi-Fi机种 C ) (快门) 轻触图标可拍摄照片。 D ) 已拍摄

  • 使用自带的ImagePicker获取照片和录像,并能够根据需要调节录像分辨率,能够保存结果到媒体库,并能够使用ftp协议发往服务器,能够预览发送内容(附带一个流媒体播放的Demo,未全部完善),内附服务器简易配置。请在配置完成服务器之后再进行网络相关调试,否则将出现无法处理的Bug。 [Code4App.com]

  • 我试图在没有预览的情况下配置相机兼容性,但在拍摄第二张照片后,应用程序异常崩溃: 2018-12-27 14:36:20.392 123 89-12977/com.example.android.braillefeedere/requestThread-0:捕获调用期间收到设备异常:java.io.ioException:setPreviewTexture在Android.hardware.cam

  • 主要内容:本节引言,1.调用系统自带Carema,2.自己写一个拍照页面,3.本节示例代码下载,本节小结本节引言 本节给大家带来的是Android中Camera的使用,简单点说就是拍照咯,无非两种: 1.调用系统自带相机拍照,然后获取拍照后的图片 2.要么自己写个拍照页面 本节我们来写两个简单的例子体验下上面的这两种情况~ 1.调用系统自带Carema 我们只需下面一席话语,即可调用系统相机,相机拍照后会返回一个intent给onActivityResult。 intent的extra部分包含一

  • 问题内容: 拜托,有人可以帮我吗? 我有一个正在使用的项目,我想拍照并保存文件,但是没有实现函数。 问题答案: 结果:我实现了一个扩展JavaCameraView的新类,并为自己实现了功能takePicture。 --