2012-01-24 19 views
17

Antes de la introducción de Android 3.0, la primera cuenta com.google registrada en un teléfono era la cuenta principal y la única cuenta utilizada por Android Market.Cómo obtener la dirección de correo electrónico de la cuenta de compra no primaria

En dispositivos con Android 3.0 y versiones posteriores, ya no puedo confiar en esto (Account[0]) para obtener la dirección de correo electrónico del cliente.

¿Hay alguna manera de decir que cuenta com.google está realizando la compra?

(todo lo que necesito es el índice en la matriz Account[] para la cuenta tipo com.google. Puedo obtener la dirección de correo electrónico una vez que tenga el índice correspondiente)

+0

los solucionaron esto? – Mikky

Respuesta

-2
import android.provider.ContactsContract; 

AccountManager am = AccountManager.get(this); 
Account[] accounts = am.getAccountsByType("com.google");   

//you can set current sync account.. 

boolean syncEnabled = ContentResolver.getSyncAutomatically(accounts[0], ContactsContract.AUTHORITY); 
1

Me temo que no es posible. Según lo que he encontrado, parece que la cuenta que realiza la compra en la aplicación es la cuenta utilizada para instalar la aplicación, que usted no conoce. Supongo que es posible leerlo desde la base de datos de la aplicación Play store en teléfonos rooteados.

Parece que ni siquiera es posible encontrar la cuenta de compras después de que la compra se haya realizado utilizando el Google Play Android Developer API, aunque no estoy seguro de por qué.

Si, por casualidad, averígualo, házmelo saber.

1

Acabo de hacer una búsqueda rápida en Google y encontré esto en este sitio here.

Puede usar AccountManager.getAccounts o AccountManager.getAccountsByType para obtener una lista de todos los nombres de cuenta en el dispositivo. Afortunadamente, para ciertos tipos de cuenta (incluido com.google), los nombres de las cuentas son direcciones de correo electrónico. Ejemplo de fragmento a continuación.

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ Account[] accounts = AccountManager.get(context).getAccounts(); for (Account account : accounts) { 
    if (emailPattern.matcher(account.name).matches()) { 
     String possibleEmail = account.name; 
     ... 
    } } 

Tenga en cuenta que esto requiere el permiso GET_ACCOUNTS:

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

Más sobre el uso de AccountManager se puede encontrar en el código Contact Manager muestra en el SDK.

-1

firs nombre y apellido >> código java?

correo electrónico código de complemento

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ 
Account[] accounts = AccountManager.get(getApplicationContext()).getAccounts(); 
for (Account account : accounts) { 
    if (account.type.equals("com.google")) { 
     email = account.name.toString(); 
     break; 
    } else if (emailPattern.matcher(account.name).matches()) { 
     email = account.name.toString(); 
    } 
} 
+1

Sugeriría dar más explicaciones. – peterh

Cuestiones relacionadas