2

我正在尝试将 Crosswalk 运行时嵌入到具有WebView其他 Java 代码的应用程序中(即不是作为 Web 应用程序的简单包装器)。

现在他们的官方文档说您无论如何都需要以下权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这是很多!

所以我尝试使用更少的权限。我发现在任何情况下需要以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

这没关系。因此,如果这足够了,那将是对文档中给出的列表的重大改进。

但也许在某些情况下也需要其他的。有人可以澄清吗?在什么情况下需要其他权限?仅当通过 JavaScript 触发某些操作时?那么一个人可能会在没有这些的情况下使用 Crosswalk,对吧?

4

1 回答 1

2

虽然您对官方文档所述的内容是正确的,但人行横道站点上存在一些相互矛盾的信息也是事实。

具体来说,这个链接隐藏在 Cordova 迁移部分:

使用命令行工具进行迁移

建议:

Crosswalk 需要一些额外的权限,这些权限不是由 Cordova 应用程序生成器插入的。

并特别引用:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

重点是,科尔多瓦只添加

<uses-permission android:name="android.permission.INTERNET" />

因此必须得出唯一真正需要的权限是:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

正如你正确得出的结论。

我的猜测是,Crosswalk 团队将 web 视图支持的所有功能/扩展(包括访问 WebRTC 会话的摄像头)所需要的所有权限的联合添加到列表中。

在这方面,该列表是适当的(与其他独立浏览器运动的列表非常相似)并且可能是为了缩短解释而提供的。

顺便说一句,我已经进行了测试并从清单中删除了“CAMERA”权限,并且webview优雅地处理了缺席(它没有使应用程序崩溃,相机只是停止工作并给出了一张黑色图片),这似乎指向即使使用有限的权限集,您也可以将 webview 处理给用户以进行通用浏览(但不要相信我的话:我刚刚尝试了相机!)

希望这可以帮助

于 2015-02-18T10:15:36.270 回答