2016-08-03 136 views
0

我通过运行ionic platform rm android清除了我的离子目录,然后用add命令添加了它。为什么“离子平台添加android”会自动为android.permission.GET_ACCOUNTS添加权限

不知何故,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" /> 

哪里这些从何而来?

我​​3210只有这些:

<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专业版(本书虽然ionic info显示Windows 8.1),使用Cordova CLI 6.3.0,Ionic CLI 1.7.16,Node v0.12.7。

回答

2

要回答你的问题,这与Ionic框架无关。此权限是通过您在项目中添加的电子邮件作曲家插件自动添加的。这是为了访问设备中配置的电子邮件帐户来发送电子邮件。

已通过在我的cordova barebone项目中添加电子邮件作曲者插件进行验证。它确实在AndroidManifest.xml中添加<uses-permission android:name="android.permission.GET_ACCOUNTS" />,您也可以通过删除此插件来检查它。希望是帮助。

+1

如果我手动删除此权限,该怎么办?恕我直言,这应该是一个咨询,而不是具体的注射 - 我不希望任何人相信我的应用程序*捕获*他们的联系人。顺便说一句+1你的方法! – Dinesh

+0

@Dinesh手动删除权限不是可取的,因为它可能会导致尝试使用电子邮件插件时出现问题,并再次读取插件将此权限返回到XML文件 – Gandhi

+1

不,手动删除没有造成任何问题。但我摆脱了这个插件,而是增加了'cordova-plugin-email',它没有添加这个perm。我相信默默地添加新的权限是错误的*要做的事情。 – Dinesh

1

目前(2月2017年,科尔多瓦6.5.0),它看起来像科尔多瓦,插件,邮件安装科尔多瓦 - 插件 - 电子邮件 - 作曲家添加插件科尔多瓦插件添加科尔多瓦,插件,邮件

如果用Dinesh所描述的非cordova-plugin-email替换cordova-plugin-email-composer不适合你,那么你应该看看platforms/android/android.json你可以找到以下内容:

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

如果你删除了这个(和rund cordova prepare),你将不会在清单文件中找到该行。

经过测试的应用程序打开电子邮件客户端与预充满收件人,主题和正文,gmail打开我的Android 4设备罚款。

相关问题