Die E-Mail-Adresse des Android-Besitzers wird gut aufgenommen

Ich möchte dem Benutzer erlauben, mir ihre E-Mail-Adresse zu geben, ohne ihn einzutragen. Idealerweise gibt es ein Textfeld, in dem der Benutzer entweder eine E-Mail-Adresse eingeben oder einen Knopf drücken könnte, um ihn zu autofillieren.

In einer früheren Frage schlägt Roman Nurik vor, einen AccountManager zu benutzen , um dies zu behandeln, aber das erfordert meine App, das GET_ACCOUNTS-Privileg zu verwenden; Meine App konnte dann auf alle Konten des Nutzers auf dem Gerät zugreifen, einschließlich ihrer Facebook / Twitter-Konten. Diese Erlaubnis scheint viel zu breit für das, was ich will

  • Wie zu beheben "Prozess ist schlecht" Fehler für ein Android Widget?
  • Wie ändere ich TextView Text bei Änderung von EditText's Text?
  • Wie man zwischen internen und externen SD-Kartenpfad in Android unterscheidet
  • ActionBar vor Wabe
  • ARM Assembly Backtrace PC Offset
  • Dynamisches Hinzufügen von Bildern zum Galerie-Widget
  • Gibt es einen schöneren Weg, um das zu behandeln, das es nicht erfordert, meiner App eine so schwere Erlaubnis zu gewähren?

  • Libgdx - IllegalStateException an unkown location
  • Download IPA / APK von Crashlytics
  • Android.view.WindowManager $ BadTokenException: Kann nicht hinzufügen Fenster - Token Null ist nicht gültig
  • ManagedQuery () vs context.getContentResolver.query () vs android.provider.something.query ()
  • Video auf TextureView abspielen
  • Ist es möglich, immer die Aktionsleiste anzuzeigen, wenn Sie adjustPan als Soft-Eingabemodus verwenden?
  • 4 Solutions collect form web for “Die E-Mail-Adresse des Android-Besitzers wird gut aufgenommen”

    In der Tat können Sie das nicht nur ohne GET_ACCOUNTS tun, die Informationen, die Sie nur in den Kundendaten des Nutzers haben möchten.

    Auf meinem Sprint-Telefon, der "Besitzer" Adresse Sprint zuweist ist myusername@sprintpcs.com , und das kann mit getprop aus einer Shell gesehen werden. Aber das ist nicht meine primäre E-Mail-Adresse, oder sogar eine, die ich jemals verwenden / überprüfen. Was Sie wollen, ist meine Google Mail-Adresse, und das ist in den Android-Account-Daten gespeichert.

    Eigentlich willst du eines der beiden – das ist ein weiterer Grund, warum du GET_ACCOUNTS brauchst. Wenn du nach meiner E-Mail-Adresse fragen wirst, musst du mich unter den beiden @ gmail.com-Konten auswählen, die ich auf dem Gerät konfiguriert habe. Ich weiß, welches ist mein "bevorzugtes" (obwohl auch das kontextuell ist), aber AFAIK wird auch nicht von dem System als "primär" oder "default" betrachtet als das andere.

    Ich weiß, ich bin viel zu spät, aber das könnte für andere nützlich sein.

    Ich denke, der beste Weg, um Auto- Populieren ein E-Mail-Feld ist jetzt mit AccountPicker

    Wenn deine App die GET_ACCOUNTS-Berechtigung hat und es nur ein Konto gibt, bekommst du es sofort. Wenn Ihre App es nicht hat, oder wenn es mehr als ein Konto gibt, erhalten die Benutzer eine Aufforderung, damit sie die Aktion autorisieren können oder nicht.

    Ihre App muss die Google Play Services enthalten, aber es braucht keine Berechtigungen.

    Dieser ganze Prozess wird auf älteren Versionen von Android (2.2+ ist erforderlich) fehlschlagen, oder wenn Google Play nicht verfügbar ist, also sollten Sie diesen Fall berücksichtigen.

    Hier ist ein einfaches Codebeispiel:

      private static final int REQUEST_CODE_EMAIL = 1; private TextView email = (TextView) findViewById(R.id.email); // ... try { Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, false, null, null, null, null); startActivityForResult(intent, REQUEST_CODE_EMAIL); } catch (ActivityNotFoundException e) { // TODO } // ... @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) { String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); email.setText(accountName); } } 

    Ein alternativer Ansatz könnte sein, den Google-Benutzernamen zu finden, der mit dem Gerät verknüpft ist, von dem aus Sie eine Adresse von user@gmail.com rekonstruieren user@gmail.com , aber das erfordert noch den AccountManager. Siehe Zugriff auf Google-Konto-ID / Benutzername über Android .

    Es gibt keine schöne Möglichkeit, auf die Benutzerkonto (E-Mail) Informationen zuzugreifen, ohne die GET_ACCOUNTS-Berechtigung zu bitten. 🙂

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.