【问题标题】:Android 6.0 RuntimeException: Fail to connect to camera serviceAndroid 6.0 RuntimeException:无法连接到相机服务
【发布时间】:2016-01-21 11:10:45
【问题描述】:

我在 Nexus5 (Android6.0) 中运行的应用出现错误。

错误是

java.lang.RuntimeException: 连接相机服务失败

我已将权限添加到 AndroidManifest.xml。

但该应用可以在另一部手机(Android5.1)和 genymotion AVD(Android 4.0)上运行。

关键代码如下

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

}

【问题讨论】:

标签: java android android-camera android-6.0-marshmallow


【解决方案1】:

在你的 gradle.build targetSdkVersion 22 中写入。这是一个临时解决方案,但有效。

【讨论】:

  • 这也是我的解决方案。很奇怪!可能是什么原因?
  • 一点也不奇怪。 API 级别
  • 将 Target sdk 更改为 22 不是解决方案,因为它对于 android 6 设备仍然会失败,请按照此链接 developer.android.com/training/permissions/requesting.html 使用 android 6 方式进行正确实施
  • 代替这些应用运行时权限以获得更好的结果,您也可以在 6.0 以上使用它
【解决方案2】:

打开设置->应用->点击你的应用->权限->打开相机权限。
你可以看到: http://developer.android.com/training/permissions/requesting.html

【讨论】:

    【解决方案3】:

    这是因为在 Android 6.0 中权限模型不同。您必须实施新的权限模型,该模型在运行时请求权限。即使您不要求它,您也可以在手机的应用设置中手动启用它,但是当您在 Play 商店中发布您的应用时,这将不起作用。 Here 是一篇关于如何获得运行时权限的文章

    您还可以查看 Nick 的回答 here 以获得多个权限

    【讨论】:

      【解决方案4】:

      从 android 6.0 开始,您可以处理应用程序权限天气,您将为应用程序授予或不授予特定权限。 在您的情况下,如果您没有为您的应用启用相机权限,则可能会出现此问题。

      所以,你需要从settings->apps->your_app->enable camera权限开启权限。

      【讨论】:

      • 你拯救了我的一天!但是,我们似乎必须像@Amalan Dhananjayan 一样明确地请求权限,否则最终用户不应该知道一些棘手的事情,例如设置->应用程序->您的应用程序->启用相机
      • @Houssem 是的,您需要以编程方式处理此问题。 inthecheesefactory.com/blog/… 一个很好的教程。
      【解决方案5】:

      打开相机前添加相机权限:

      点击链接添加权限: https://developer.android.com/training/permissions/requesting.html

      【讨论】:

        猜你喜欢
        • 2017-10-29
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-12
        • 2021-12-25
        相关资源
        最近更新 更多