在Phonegap/Cordova应用中设置Android 6.x(Marschmallow)的应用程序权限

4
从Android 6.x(Marshmallow)开始,应用程序安装时不需要请求权限,但在运行时需要。
我正在使用phonegap开发一个应用程序,其中使用了一个条形码插件。当我在Android 6.x上运行此应用程序时,它既不会在安装之前向用户请求权限,也不会在运行时请求权限。相反,它只是显示一个框,说明该应用程序无法工作,并且必须重新启动设备。
根据http://phonegap.com/blog/2016/02/09/phonegap_6_now_on_build/,我在我的项目的config.xml文件中添加了以下行(路径:myProject/config.xml)。
<preference name="phonegap-version" value="cli-6.0.0" />

我部署在本地,但仍然显示相同的错误。有没有办法修复它?我希望该应用程序在安装之前显示此框。

更新:在我的manifest.xml中,我将其设置为:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />

我现在已经将targetSdkVersion从23降低到22。错误不再出现。但是它也不会请求权限。我该如何让它请求权限?


也许你可以尝试使用 <preference name="permissions" value="none"/> - Jay Rathod
为什么?这是一个黑客攻击吗?看起来像是一个解决方法? - thadeuszlay
你搞定了吗? - Jay Rathod
请查看以下链接,可能会对您有所帮助:https://dev59.com/pZHea4cB1Zd3GeqPtsak - Jay Rathod
我知道这个问题已经有了。它基本上链接到我在一开始发布的页面。请参见我在底部的原始帖子中的更新。 - thadeuszlay
请查看以下内容 http://docs.build.phonegap.com/en_US/2.9.0/configuring_features.md.html - Jay Rathod
1个回答

4
在 Android 6 上,如果目标 API 级别为 23+,则需要在运行时请求使用相机的权限。即使在 AndroidManifest.xml 中存在相机的 uses-permission 标签。

尝试使用下面给出的链接检查权限:

barcode-link

示例用法:

function hasCameraPermission() {
    cordova.plugins.barcodeScanner.hasCameraPermission(
      function(result) {
        // if this is 'false' you probably want to call 'requestCameraPermission' now
        alert(result);
      }
    )
  }

  function requestCameraPermission() {
    // no callbacks required as this opens a popup which returns async
    cordova.plugins.barcodeScanner.requestCameraPermission();
  }

祝你好运。


我们需要安装其他插件才能使其正常工作吗?因为它对我来说无法运行。 - sanjith edward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接