为什么“离子平台添加android”会自动添加android.permission.GET_ACCOUNTS的权限

时间:2016-08-03 00:44:31

标签: android cordova ionic-framework

我通过运行ionic platform rm android清除了我的离子目录,然后用add命令将其添加回来。

platforms\android\android.jsonplatform\android\AndroidManifest.xml出乎意料地显示

        "AndroidManifest.xml": {
            "parents": {
                "/manifest": [
                    {
                        "xml": "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />",
                        "count": 1
                    }...
                ]
            }
        }

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

这些来自哪里?

我的config.xml只有以下内容:

  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="android-minSdkVersion" value="19"/>
  <preference name="android-targetSdkVersion" value="21"/>
  <preference name="BackupWebStorage" value="none"/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="FadeSplashScreen" value="true"/>
  <preference name="ShowSplashScreenSpinner" value="false"/>
  <preference name="SplashScreenDelay" value="3000"/>
  <preference name="webContentsDebuggingEnabled" value="true"/>
  <preference name="AndroidPersistentFileLocation" value="Compatibility"/>

文件package.json列出了这些插件(插件是否会自动生成某些权限要求?)

  "cordovaPlugins": [
    "cordova-plugin-device",
    "cordova-plugin-console",
    "cordova-plugin-whitelist",
    "cordova-plugin-splashscreen",
    "cordova-plugin-statusbar",
    "ionic-plugin-keyboard",
    "cordova-plugin-vibration",
    "cordova-plugin-dialogs",
    {
      "locator": "https://github.com/whiteoctober/cordova-plugin-app-version.git",
      "id": "cordova-plugin-app-version"
    },
    {
      "locator": "https://github.com/VersoSolutions/CordovaClipboard.git",
      "id": "com.verso.cordova.clipboard"
    },
    "cordova-plugin-email-composer"
  ],

我使用的是Windows 10 Pro(ionic info显示Windows 8.1),使用Cordova CLI 6.3.0,Ionic CLI 1.7.16,Node v0.12.7。

2 个答案:

答案 0 :(得分:2)

要回答您的问题,这与Ionic框架无关。您已在项目中添加的电子邮件编辑器插件自动添加此权限。这样做是为了访问设备中配置的电子邮件帐户以发送电子邮件。

通过在我的cordova准系统项目中添加电子邮件编辑器插件验证了这一点。它会在<uses-permission android:name="android.permission.GET_ACCOUNTS" />中添加AndroidManifest.xml,您也可以通过删除此插件来检查它。希望是有帮助的。

答案 1 :(得分:1)

目前(2017年2月,Cordova 6.5.0) cordova-plugin-email 安装 cordova-plugin-email-composer 添加插件cordova插件添加cordova-plugin-email

如果用Dinesh描述的非cordova-plugin-email替换cordova-plugin-email-composer对你不起作用你应该看看platform / android / android.json你probalby找到以下:

"AndroidManifest.xml": {
                "parents": {
                    "/manifest": [
                        {
                            "xml": "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />",
                            "count": 2
                        }
                    ]
                }
            }

如果你删除它(并且rund cordova准备)你将不再在清单文件中找到该行。

针对打开电子邮件客户端的应用程序测试了预填充的收件人,主题和正文,gmail在我的Android 4设备上打开正常。