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);
}
}
Add Camera Permission before Opening the Camera:
follow the Link for adding Permissions: https://developer.android.com/training/permissions/requesting.html
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
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.Write in your gradle.build targetSdkVersion 22. It is a temporary solution but work.
open Settings -> Apps -> click you app -> Permissions -> open Camera permissions.
you can see: http://developer.android.com/training/permissions/requesting.html