AccountManager: Cómo permitir que el usuario seleccione una cuenta utilizando un cuadro de diálogo
En el tutorial de AccountManager Recordando a su usuario , se recomienda:
Si hay más de una
Account
en la matriz, debe presentar un diálogo pidiendo al usuario que seleccione una.
- Cómo implementar AccountManager en mi aplicación
- ¿Por qué AccountManager.invalidateAuthToken requiere AccountType en lugar de AccountName?
- AccountManager getUserData devolver null a pesar de que se establezca
- Autenticador de cuentas personalizadas. Limpieza después de que la cuenta se haya eliminado del dispositivo
- ¿Cómo hacer que AccountManager (authtoken) y OpenID trabajen juntos (sin AppEngine)?
¿Cuál es la mejor manera de hacer esto? Tengo una solución en mente, pero si hay otros buenos ejemplos de la comunidad, parece que este es el tipo de código que podría ser compartido y fácilmente reutilizado por otros.
- ¿Es posible anular la funcionalidad "Eliminar cuentas" de Cuentas y sincronización?
- ¿Se notifica SyncAdapter cuando AccountManager elimina la cuenta?
- ¿No debería Android StoreManager almacenar símbolos de OAuth en una base de datos por aplicación / UID?
- SecurityException al intentar agregar una cuenta
- AccountManager no puede agregar la cuenta en Sony XZ 7.1.1
- Single-signon en android con Active Directory
- Obtener el ID de Google utilizado para descargar la aplicación
- SecurityException en getPassword de accountManager en android
Desde Android 4.0 (API nivel 14) en adelante, el lanzamiento de una actividad con una intención mostrada a continuación muestra el selector de cuenta.
Intent intent = AccountManager.newChooseAccountIntent(null, null, new String[] { acc_type }, true, null, null, null, null); startActivityForResult(intent, CHOOSE_ACCOUNT);
Para dispositivos anteriores a 4.0,
utilice https://github.com/frakbot/Android-AccountChooser
Yo uso este código. Muestra un diálogo, por lo que el usuario final puede elegir uno de la cuenta de google.
ArrayList<String> gUsernameList = new ArrayList<String>(); AccountManager accountManager = AccountManager.get(this); Account[] accounts = accountManager.getAccountsByType("com.google"); gUsernameList.clear(); //loop for (Account account : accounts) { gUsernameList.add(account.name); } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Choose you gmail-account"); ListView lv = new ListView(this); ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1, android.R.id.text1, gUsernameList); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent,View view,int position,long id) { Log.d("You-select-gmail-account", gUsernameList.get(position)) ); } }); builder.setView(lv); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }); final Dialog dialog = builder.create(); dialog.show();
- Android espera otro resultado de actividad – no funcionó
- Phonegap dispositivo está indefinido en Android y iOS