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

两者都一样。

【讨论】:

谢谢。您是否建议将&lt;preference name="permissions" value="none" /&gt; 移至任何其他偏好声明之上?这是有道理的,但不幸的是并没有解决问题。 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 首选项