【问题标题】:Cordova Android app and user permissionsCordova Android 应用程序和用户权限
【发布时间】:2018-01-23 05:43:33
【问题描述】:

我有一个 Android Cordova 应用程序,我正在使用 GPS,检查网络状态,读取/写入 Documents 文件夹并拍摄相机照片。这是我对清单 XML 文件的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

清单文件由 Cordova 框架自动生成。出于某种原因,我看不到相机权限。安装时不再询问权限(从 Android 6 开始),而是在使用前询问权限。 我正确获得了 GPS 访问权限弹出窗口,但没有获得读/写 Documents 文件夹权限。我也从未获得过相机许可,尽管我可以在未经许可的情况下使用它。网络状态权限的情况相同(从未被询问)。

我发现 Android 权限方案非常混乱,在应用程序管理器下,我的应用程序已按预期获得位置和存储,但相机和网络状态丢失。

回顾一下,在应用程序内部,在实际代码中,我至少使用过一次这些设备

  • GPS 细粒度
  • GPS 粗略(可能是 Wifi SSID 三角测量技巧)
  • 在文档上书写
  • 阅读文档
  • 读取网络状态(离线/Wifi/3G等)
  • 从相机拍照

Cordova 框架编写了这个清单文件:

  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.hardware.location.gps(为什么不是.permission?)
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.WRITE_EXTERNAL_STORAGE

在应用程序管理器中,我得到了这些选项:

  • 位置
  • 存储

所以基本上我得到了三组不同的权限:-(

【问题讨论】:

  • 我不明白你的问题是什么。拥有三组不同的权限有什么问题。您可以使用您需要的那些权限,如果它们是关键权限,您需要检查它们是否已授予您,如果没有则要求用户授予权限。
  • 我的问题是我在三个不同的地方看到不一致的权限列表:我的代码、清单文件、应用程序设置 UI.... 理想情况下,如果在我的代码上我使用相机,那么我应该在清单文件上看到摄像头权限,在应用程序设置 UI 上看到摄像头权限。任何其他设备(GPS、摄像头、网络、文件系统等)也是如此。
  • 在你的代码中(在你的 config.xml 文件中)你声明你想要的权限,当你构建你的应用程序时,所有的清单文件都会被合并,所以如果你使用一些库和第三方工具,他们的所需的权限与您的权限一起合并到一个清单文件中。关于应用程序设置 UI 和清单中的不同呈现方式:那是因为在 UI 中,它们需要对所有不是程序员的所有用户进行自我解释,这并不意味着它们与您在您的清单中添加的不同manifest,只是呈现方式不同。
  • 好的,但是为什么我在 UI 上看不到“相机”权限?我在我的应用上使用相机...在 UI 上我只看到“位置”和“存储”
  • 您在发布的清单权限中没有camera 权限。如果是您的merged manifest,我不明白您如何访问相机。也许是因为您的手机已植根(只是猜测)?虽然这听起来也不适合有根设备。

标签: android cordova permissions gps


【解决方案1】:

我在你在 cmets 中提到的this cordova plugin 中找到了这个。

所以不知何故,这个&lt;uses-permission android:name="android.permission.CAMERA/&gt; 必须在你的代码中,这样这个插件才能使用它。

可能您没有检查正确的程序以查看其权限,或者如果设备上的应用程序权限中未显示相机权限,则您无法在此应用程序中使用相机。请再次检查,因为我很想知道情况如何。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多