Android 6.0 RuntimeException: Fail to connect to c

2020-04-01 09:09发布

问题:

An error occurred with my app which ran in Nexus5 (Android6.0).

The error was

java.lang.RuntimeException: Fail to connect to camera service

I had added the permission to the AndroidManifest.xml.

But the app is OK with another phone(Android5.1), and genymotion AVD(Android 4.0).

The key code is below

 @Override
public void onResume() {
    super.onResume();
    try {
        mCamera = Camera.open();
    }catch (Exception e){
        Log.e(TAG,"open camera failed",e);
    }

}

回答1:

Write in your gradle.build targetSdkVersion 22. It is a temporary solution but work.



回答2:

open Settings -> Apps -> click you app -> Permissions -> open Camera permissions.
you can see: http://developer.android.com/training/permissions/requesting.html



回答3:

This happens because, in Android 6.0 the permission model is different. You have to implement the new permission model which asks for the permission on run time. Even if you don't ask it, you can manually enable it in the phone's app setting, but that is not gona work when you publish your app in the play store. Here is an Article on How to get Run time permissions

Also you can check Nick's answer here for getting multiple permissions



回答4:

From android 6.0 you can handle the app permission weather you will give or not specific permission for an application. In your case if you didn't enable camera permission for your app then this issues may arise.

So, you need to enable permission from settings->apps->your_app->enable camera permission.



回答5:

Add Camera Permission before Opening the Camera:

follow the Link for adding Permissions: https://developer.android.com/training/permissions/requesting.html