权限
xwalk_permissions字段是Crosswalk对于W3C manifest的扩展。在打包安卓版Crosswalk应用时,它被用来在AndroidManifest.xml文件中设定权限。
这是必须的,因为Android应用不可以在运行时请求permission:所有应用需要的permission必须在安装的时候被授予。在其他章节中((Crosswalk Tizen,嵌入式API),这个字段是被忽略的。
注意: 如果你正在通过个嵌入式API从manifest中加载应用,那么你必须在AndroidManifest.xml中为Crosswalk应用手动添加permission。请参见 下文,其中是关于Crosswalk的web APIs需要的permission的指导。
对Android打包的影响
Crosswalk App Tools将manifest.json中的permissions或者xwalk_permissions转换成AndroidManifest.xml中的<android:uses-permission>元素。
例如,给定下列的manifest:
{
"name": "simple",
"start_url": "index.html",
"xwalk_permissions": [
"Contacts",
"Geolocation",
"Messaging",
"Vibration"
],
"icons": [{
"src": "icon96.png",
"type": "image/png",
"sizes": "96x96",
"density": "2.0"
}
]
}
...并且这个crosswalk-pkg <Path to directory that contains a web app>命令行:
crosswalk-pkg <Path to directory that contains a web app>
...生成下列的AndroidManifest.xml权限:
<!-- 打包过程中默认添加的权限 -->
<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"/>
<!-- 在manifest文件中添加的权限-->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
注意crosswalk-pkg命令通常添加一个默认集合的permission(在上例中的第一组)。第二组的permission是在manifest中的xwalk_permissions字段添加的。manifest中的permission和Android permission的对应关系在下表中展示。
API需要的permission
如果你想在应用中使用一些Crosswalk的web API,你可能需要在AndroidManifest.xml中添加权限使得那些API可访问。你需要手动添加(如果你在使用嵌入式API)。
下表展示了web API分别需要哪些permission。
| Crosswalk web API | AndroidManifest.xml permission(s) |
|---|---|
| Contacts |
android.permission.READ_CONTACTS android.permission.WRITE_CONTACTS |
| Geolocation | android.permission.ACCESS_FINE_LOCATION |
| Messaging |
android.permission.READ_SMS android.permission.READ_PHONE_STATE android.permission.RECEIVE_SMS android.permission.SEND_SMS android.permission.WRITE_SMS |
| Vibration | android.permission.VIBRATE |
例如,你可能有一个嵌入Crosswalk运行时的Android应用,并且想要在应用的web应用部分使用JavaScript 震动API。这种情况下,你需要手动地将这个permission加入到AndroidManifest.xml中:
<uses-permission android:name="android.permission.VIBRATE"/>
中文版
