2016-08-03 4 views
0

Ich löschte mein ionisches Verzeichnis durch Ausführen von ionic platform rm android und fügte es dann wieder mit add Befehl.Warum fügt "ionic platform android" automatisch die Berechtigung für android.permission.GET_ACCOUNTS hinzu

Irgendwie ist der platforms\android\android.json und platform\android\AndroidManifest.xml zeigen unerwartet

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

und

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

Wo kommen diese?

Mein config.xml hat nur diese:

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

Datei package.json diese Plugins hat aufgelistet (nicht ein Plugin automatisch bestimmte Berechtigungsanforderungen generieren?)

"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" 
    ], 

Ich bin auf 10 Pro Fenster (altho ionic info Windows 8.1) mit Cordova CLI 6.3.0, Ionic CLI 1.7.16, Knoten v0.12.7.

Antwort

2

Um Ihre Frage zu beantworten, hat dies nichts mit Ionic Framework zu tun. Diese Berechtigung wird automatisch per E-Mail-Composer-Plugin hinzugefügt, das Sie in Ihrem Projekt hinzugefügt haben. Dies geschieht, um auf das konfigurierte E-Mail-Konto im Gerät zuzugreifen, um E-Mails zu senden.

Haben Sie dies durch Hinzufügen von E-Mail-Composer-Plugin in meinem Cordoba Barebone-Projekt verifiziert. Es fügt hinzu <uses-permission android:name="android.permission.GET_ACCOUNTS" /> in AndroidManifest.xml Sie können es auch überprüfen, indem Sie dieses Plugin entfernen. Hoffnung ist Hilfe.

+1

Was passiert, wenn ich diese Berechtigung manuell lösche? Meiner Meinung nach sollte dies eine beratende und keine konkrete Injektion sein - ich möchte nicht, dass irgendjemand glaubt, dass meine App ihre Kontakte * erfasst *. BTW ein +1 für Ihren Ansatz! – Dinesh

+0

@Dinesh das manuelle Entfernen der Erlaubnis ist nicht ratsam, da es Problem beim Versuch, E-Mail-Plugin zu verwenden und auch das Plugin erneut lesen, bringt diese Berechtigung zurück zu XML-Datei – Gandhi

+1

Nein, manuelle Entfernung hat kein Problem verursacht. Aber ich habe dieses Plugin losgeworden und stattdessen 'cordova-plugin-email' hinzugefügt, das diese Dauerwelle nicht hinzugefügt hat. Ich glaube, dass das Hinzufügen neuer Berechtigungen stillschweigend * falsch * ist. – Dinesh

1

Aktuell (Feb 2017 Cordova 6.5.0) es sieht aus wie cordova-plugin-E-Mail installiert cordova-plugin-E-Mail-Komponist das Plugin mit Hinzufügen cordova Plugin cordova-plugin-E-Mail

hinzufügen

Wenn das Ersetzen des cordova-plugin-email-composer durch die nicht cordova-plugin-email wie von Dinesh beschrieben nicht für Sie funktioniert, sollten Sie sich auch plates/android/android.json ansehen. Sie finden das folgende:

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

Wenn Sie dies entfernen (und Cordova vorbereiten), finden Sie die Zeile in der Manifestdatei nicht mehr.

Getestet für eine App, die den E-Mail-Client mit vorgefülltem Empfänger, Betreff und Text öffnet, öffnet sich Google Mail auf meinem Android 4-Gerät.

Verwandte Themen