Android 上的嵌入式人行横道运行时权限

Permissions for embedded Crosswalk runtime on Android

我正在尝试 embed the Crosswalk runtime 作为应用程序中其他 Java 代码的 WebView 替代品(即不是网络应用程序的简单包装器)。

现在他们的 official documentation 说您需要以下权限 无论如何:

<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" />

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

但在某些情况下可能还需要其他的。有人可以澄清吗?在什么情况下需要其他权限?仅当通过 Java 脚本触发某些操作时?那么不用这些也可以用Crosswalk吧?

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

具体来说,这个link埋在Cordova迁移部分:

Migrate using command line tools

建议:

Crosswalk requires a couple of extra permissions which are not inserted by the Cordova application generator.

并特别引用:

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

要点是,cordova 只添加

<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 团队在列表中添加了 webview 支持的所有 features/extensions 共同需要的所有权限的联合(包括访问 WebRTC 会话的摄像头)。

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

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

希望对您有所帮助