studio programacion otra móviles libros desarrollo desarrollar curso cuenta configurar aprende aplicaciones android permissions

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



manual de programacion android pdf (4)

Quiero permitir que el usuario me proporcione su dirección de correo electrónico sin escribirla. Idealmente, habría un campo de texto donde el usuario podría escribir una dirección de correo electrónico o presionar un botón para autocompletarla.

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, incluidas sus cuentas de Facebook / Twitter. Ese permiso parece demasiado amplio para lo que quiero.

¿Hay alguna manera más agradable de manejar esto que no requiera otorgar a mi aplicación un permiso tan pesado?


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

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

En realidad, quieres uno de los dos , que es otro motivo por el que necesitas GET_ACCOUNTS. Si va a solicitar mi dirección de correo electrónico, debe permitirme seleccionar entre las dos cuentas de @ gmail.com que he configurado en el dispositivo. Sé cuál es mi ''preferido'' (aunque es contextual), pero el sistema no considera que AFAIK sea más ''primario'' o ''predeterminado'' que el otro.


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. :-)


Sé que soy demasiado tarde, pero esto podría ser útil para otros.

Creo que la mejor manera de rellenar automáticamente un campo de correo electrónico ahora es mediante el uso de AccountPicker

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

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

Todo este proceso fallará en las versiones anteriores de Android (se requiere 2.2+), o si Google Play no está disponible, por lo que debe considerar ese caso.

Aquí hay una muestra 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); } }