我正在尝试用其他Java代码在应用程序中embed the Crosswalk runtime替换为WebView
(即不作为Web应用程序的简单包装)。
现在,他们的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" />
没关系因此,如果足够的话,那将是对文档中给出的列表的重大改进。
但也许在某些情况下还需要其他。有人可以澄清吗?在什么情况下还需要其他权限?仅当通过JavaScript触发某些操作时?然后可能没有这些就可以使用Crosswalk,对吧?
最佳答案
尽管您对官方文档中的内容正确无误,但在人行横道站点上确实存在一些相互矛盾的信息也是如此。
具体来说,此链接埋在Cordova迁移部分中:
Migrate using command line tools
建议:
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友好地处理了该缺失(它没有使应用程序崩溃,相机只是停止工作并给出了黑色图片),这似乎表明即使您只有有限的权限集,您也可以处理用户的Web视图以进行常规浏览(但请不要相信我:我只是尝试过相机!)
希望这可以帮助