【发布时间】:2016-09-15 09:49:33
【问题描述】:
我有 2 台设备来测试我的应用:运行 Android 4.2.2 的 Acer v370 和运行 6.0.1 的三星 Galaxy S6
该应用在 Acer 上运行良好,但在 S6 上立即崩溃。我正在使用
_camera = Camera.open(0);
并且调试说它此时崩溃了。
我得到的错误是:
09-15 11:24:33.491 15284-15284/com.user.qrReader E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.user.qrReader, PID: 15284
java.lang.RuntimeException: Unable to resume activity {com.user.qrReader/com.user.qrReader.MainActivity}:
java.lang.RuntimeException: Fail to connect to camera service
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4156)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4250)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3361)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.<init>(Camera.java:568)
at android.hardware.Camera.open(Camera.java:405)
at com.user.qrReader.CameraPreview.openCamera(CameraPreview.java:206)
at com.user.qrReader.CameraPreview.captureStart(CameraPreview.java:288)
at com.user.qrReader.QRReaderAppManager.onResume(QRReaderAppManager.java:208)
at com.user.qrReader.MainActivity.onResume(MainActivity.java:187)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1286)
at android.app.Activity.performResume(Activity.java:6987)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4145)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4250)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3361)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
这是我的清单中的权限:
<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" />
我不能使用 camera2,因为我必须让应用至少兼容 android 4,而且我不知道该往哪个方向发展。它一定与新的 android 相关,但我找不到。有什么想法吗?
编辑:您也可以手动执行此操作,安装 apk 后,转到设置>应用程序>应用程序管理器>{我的应用程序}>权限>允许相机。当然,如果您有解决方案,那将是可怕且无用的,但是在我调试时它对我有所帮助,因此我将把它留在这里。 谢谢你的回答。
【问题讨论】:
-
可能是由于棉花糖中的运行时权限
-
在 6.0 上你需要在运行时检查权限,而 CAMERA 是硬权限所以你需要检查它
-
也许this 可以提供一些帮助。
-
您需要检查权限的示例并保存吗?
-
@Rodriquez 是的,谢谢,那太好了。
标签: java android android-camera android-4.2-jelly-bean android-6.0.1-marshmallow