Cordova 4.0 config.xml 中的 Android 权限
Posted
技术标签:
【中文标题】Cordova 4.0 config.xml 中的 Android 权限【英文标题】:Android permissions in Cordova 4.0 config.xml 【发布时间】:2014-11-25 12:00:44 【问题描述】:我使用 Cordova 4.0 创建了一个 phonegap 应用程序(在 ios 上通过 cli 运行良好),但我也想使用 build.phonegap.com 尤其适用于 android。
主要问题是在 Android 上安装 APK 时,安全警告会列出所有功能,而我实际上并不需要任何功能。
我有read,您可以使用<preference name="permissions" value="none" />
删除所有权限,然后有选择地添加回您想要的权限。
但是,这不起作用;我仍然获得安装时请求的所有权限。我一定是遗漏了什么,或者有什么改变了。 (我使用 Cordova 而不是 Phonegap 是不是犯了一个错误?这很容易纠正..)
我的 config.xml 如下:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.test" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0"
xmlns:gap="phonegap.com/ns/1.0"
xmlns:android = "http://schemas.android.com/apk/res/android">
<name>Test</name>
<description>
Test.
</description>
<author email="test@test.com" href="http://test.com">
Test
</author>
<content src="index.html" />
<access origin="*" />
<gap:plugin name="org.apache.cordova.statusbar" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#ffffff" />
<preference name="StatusBarStyle" value="default" />
<preference name="DisallowOverscroll" value="true" />
<preference name="permissions" value="none" />
</widget>
编辑:为了消除歧义,我想删除 Android 安全警告,说此应用需要完全访问联系人、相机、互联网访问等。我不需要这些。
【问题讨论】:
您的项目的 phonegap 构建中列出了哪个版本的 phonegap? (对于 phonegap 3+,只应询问已安装插件所需的权限) 并且您的 config.xml 中的小部件定义看起来很奇怪,您是手动修改它还是由 CLI 生成的? (我在 config.xml 中看到了 cordova 和 phonegap + 对我从未见过的 android 的引用) 嘿,谢谢,Phonegap build 只列出了 3.6.3,所以我把它设置为那个。 config.xml 是使用 Cordova 4.0 命令行生成的。为了解决这个问题,我自己添加了xmlns:android = "http://schemas.android.com/apk/res/android"
,来自 phonegap 构建文档。我将看看这个 config.xml,看看我是否可以改进它。感谢您的意见。
phonegap生成的config.xml只包含xmlns:gap。这包含cordova 和phonegap 的语法。奇怪你3.6.3的权限太多了。
我下载了 Phonegap 并修改了示例 config.xml 以适合我的应用程序,现在它可以完美运行,非常感谢! (虽然我想删除它仍然需要完全的互联网访问权限,但它已经有了很大的改进!)我一定是让 Cordova config.xml 格式错误;无论如何,与您使用 Phonegap 获得的相比,它非常小。再次感谢。
【参考方案1】:
config.xml ,只是一堆信息。它不是按顺序执行的。所以如果你提到你需要DisallowOverscroll
权限,然后又提到你不需要任何权限,这意味着,
<preference name="permissions" value="none" />
不会覆盖
<preference name="DisallowOverscroll" value="true" />
例如:
<preference name="DisallowOverscroll" value="true" />
<preference name="permissions" value="none" />
和
<preference name="DisallowOverscroll" value="true" />
<preference name="permissions" value="none" />
两者都一样。
【讨论】:
谢谢。您是否建议将<preference name="permissions" value="none" />
移至任何其他偏好声明之上?这是有道理的,但不幸的是并没有解决问题。
no.. 你为什么要在 config.xml 中设置其他首选项。如果你不想要它们。
很抱歉造成混淆。我需要那些偏好“不允许过度滚动”等。我已经编辑了问题;我的意思是我想删除 Android 安全警告,说这个应用程序需要完全访问联系人、相机、互联网访问等。我不需要这些。以上是关于Cordova 4.0 config.xml 中的 Android 权限的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 与 PhoneGap Build 中的 config.xml 位置
使用cordova中的config.xml禁用firebase-crash报告
错误:未找到插件“org.apache.cordova.barcodeScanner”,或者不是 CDVP 插件。检查 config.xml 中的插件映射
无法添加cordova-plugin-telerik-imagepicker。此插件中的 <edit-config> 更改与 config.xml 中的 <edit-config&g
Cordova/Phonegap / iOS:错误:找不到插件“Plugin01”,或者不是 CDVP 插件。检查 config.xml 中的插件映射
覆盖 Visual Studio Tools for Apache Cordova config.xml 文件中的 windowSoftInputMode 首选项