Obtener la dirección de correo electrónico del propietario de Android muy bien

Quiero permitir que el usuario me proporcione su dirección de correo electrónico sin escribirlo. Lo ideal sería que hubiera un campo de texto donde el usuario podría escribir una dirección de correo electrónico o pulsar un botón para rellenarlo automáticamente.

En una pregunta anterior, Roman Nurik sugiere usar un AccountManager para manejar esto, pero eso requiere que mi aplicación use el privilegio GET_ACCOUNTS; Mi aplicación podría acceder a todas las cuentas del usuario en el dispositivo, incluyendo sus cuentas de Facebook / Twitter. Ese permiso parece demasiado amplio para lo que quiero.

¿Hay una manera más agradable de manejar esto que no requiere la concesión de mi app un permiso tan pesado?

De hecho, no sólo no puede hacer esto sin GET_ACCOUNTS, la información que desea sólo existe en los datos de la cuenta del usuario (Google).

En mi teléfono Sprint, la dirección del propietario 'sprint asigna es [email protected] , y que se puede ver usando getprop de un shell. Pero esa no es mi dirección de correo electrónico principal, ni siquiera una que use / chequee. Lo que quieres es mi dirección de gmail, y eso está almacenado en los datos de la cuenta de Android.

En realidad, usted quiere uno de los dos – que es otra razón que necesita GET_ACCOUNTS. Si vas a pedir mi dirección de correo electrónico, debes permitirme seleccionar entre las dos cuentas @ gmail.com que he configurado en el dispositivo. Sé cuál es mi "preferido" (aunque incluso eso es contextual), pero AFAIK ni es considerado por el sistema como más "primario" o "predeterminado" que el otro.

Sé que estoy demasiado tarde, pero esto puede ser útil para otros.

Creo que la mejor manera de auto-rellenar un campo de correo electrónico ahora es mediante el uso de AccountPicker

Si tu aplicación tiene el permiso GET_ACCOUNTS y ​​sólo hay una cuenta, la obtienes de inmediato. Si su aplicación no lo tiene, o si hay más de una cuenta, los usuarios reciben un mensaje para que puedan autorizar o no la acción.

Tu aplicación debe incluir los Servicios de Google Play, pero no necesita ningún permiso.

Todo este proceso fallará en versiones anteriores de Android (se requiere 2,2 o más), o si Google Play no está disponible, por lo que debería considerar ese caso.

He aquí un ejemplo de código básico:

  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); } } 

Un enfoque alternativo podría ser encontrar el nombre de usuario de Google asociado con el dispositivo, desde el cual se puede reconstruir una dirección de [email protected] , pero que todavía requiere el uso de AccountManager. Consulte Acceso al ID / nombre de cuenta de Google a través de Android .

No hay una buena forma de acceder a la información de la cuenta del usuario (correo electrónico) sin solicitar el permiso GET_ACCOUNTS. Todos los derechos reservados

  • StartBluetoothSco () lanza la excepción de seguridad (BROADCAST_STICKY) en ICS
  • ¿Google Analytics agrega permiso de wakelock?
  • Android - ¿Cómo puedo guardar un archivo legible por otra aplicación?
  • ¿Qué permisos necesita una aplicación de Android para poder usar el Servicio de Administrador de Alarma?
  • Android - Flash - Permiso para permitir la red asistida por Peer
  • ¿Por qué mi aplicación echa un `android.permission.REBOOT SecurityException`?
  • ¿Puedo activar el modo de desarrollo para un usuario que no sea el propietario en una tableta Android?
  • ¿Cómo obtener la configuración del permiso de aplicación en android?
  • Init.rc no iniciar mi servicio en el primer arranque después del flash
  • Cómo recopilar stacktrace nativo sin un permiso de lectura READ_LOGS desde el principio?
  • Android GoogleMaps myLocation Permiso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.