android - play - forma de pago familiar google
Cómo obtener la dirección de correo electrónico de la cuenta de compra no primaria (4)
Antes de la introducción de Android 3.0, la primera cuenta de com.google
registrada en un teléfono era la cuenta principal y la única cuenta utilizada por Android Market.
En los dispositivos con Android 3.0 y superiores, ya no puedo confiar en esto ( Account[0]
) para obtener la dirección de correo electrónico del cliente.
¿Hay alguna forma de saber qué cuenta com.google
está realizando la compra actualmente?
(todo lo que necesito es el índice en la matriz Account[]
para el tipo de cuenta com.google
. Puedo obtener la dirección de correo electrónico una vez que tenga el índice relevante)
¿Firs nombre y apellido >> código java?
correo electrónico agregar código
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();
}
}
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 cuentas en el dispositivo. Afortunadamente, para ciertos tipos de cuentas (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" />
Puede encontrar más información sobre el uso de AccountManager
en el código de ejemplo de Contact Manager en el SDK.
Me temo que no es posible. Por lo que encontré, parece que la cuenta que realiza la compra desde la aplicación es la cuenta que se utiliza para instalar la aplicación, que usted no sabe. Supongo que podría ser 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 se haya realizado la compra utilizando la API de Google Play Android Developer , aunque no estoy seguro de por qué.
Si usted, por casualidad, lo descubre, hágamelo saber.
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);