1 - 一些同事(使用android studio的android开发人员) 当他在我的手机上测试他的应用程序时遇到了问题(这是与android 6.0.1的关系),他面临的问题是,当他从一个画廊拍摄图像时,它可以和他一起工作,但是相机中的照片没有显示,他怀疑他在手机上保存的图像没有得到保存,他怀疑这是一个许可问题,因为它适用于银河系,但不适用于nexus。
2 - 同样的事情发生在我身上 我买了一个以前在我的手机上工作正常的插件(当我拿相机照片时),现在我更新后不再拍摄图像,我的意思是我去相机并返回应用程序而没有任何装载像以前一样进入视野。
这就是logcat显示的内容
--------- beginning of main
02-07 16:36:10.272 203-813/? D/audio_hw_primary﹕ out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
02-07 16:36:10.282 203-813/? D/audio_hw_primary﹕ select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
02-07 16:36:10.282 203-813/? D/msm8974_platform﹕ platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
02-07 16:36:10.282 203-813/? D/audio_hw_primary﹕ enable_snd_device: snd_device(2: speaker)
02-07 16:36:10.284 203-813/? D/audio_hw_primary﹕ enable_audio_route: apply and update mixer path: low-latency-playback
02-07 16:36:10.289 24484-24484/? W/CAM_ActivityCloser﹕ WARNING: Activity was artificially finished: CameraActivityController was closed.
02-07 16:36:10.302 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ START onPause: Activity = com.android.camera.util.activity.DoubleOnResumeActivityFilter@d1e256d
02-07 16:36:10.303 24484-27584/? W/CAM2PORT_AndCamAgntImp﹕ Releasing camera without any camera opened.
02-07 16:36:10.305 24484-24484/? I/CAM_2RsmeActvtyFltr﹕ END onPause: Activity = com.android.camera.util.activity.DoubleOnResumeActivityFilter@d1e256d
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ onActivityResult
02-07 16:36:10.316 25275-25275/? D/CameraController﹕ RESULT_OK
02-07 16:36:10.329 25275-25275/? I/Unity﹕ **[CameraDemo] onCaptureImageFail**
为什么会这样?以及如何解决?
答案 0 :(得分:2)
您必须在活动中申请许可
在您的函数中:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(this)) {
requestPermissions(new String[]{Manifest.permission.CAMERA,
Manifest.permission.CAMERA}, REQUEST_CAMERA);
} else {
takeFromCamera();
}
} else {
takeFromCamera();
}
并在您的活动中添加此内容
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CAMERA) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
takeFromCamera();
} else {
Log.e("Permission", "Denied");
}
}
}
清单中的:
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
答案 1 :(得分:1)
我不太了解团结并原谅我,如果这没有帮助。 通常,为了使所有内容在使用相机硬件和将图像存储在本机android中正常工作,androidmanifest.xml文件应在应用程序标记内包含以下内容:
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
要从Unity调整清单文件,这是我发现的指南: https://matthewongamedesign.wordpress.com/2013/06/08/unity-and-the-android-manifest-file/
答案 2 :(得分:1)
解决方案是在警报中请求权限,而不仅仅是在清单中授予权限。
答案 3 :(得分:0)
您是否已获得访问图库的权限?请发布您的代码..