2012-01-24 7 views
17

Prima dell'introduzione di Android 3.0, il primo account com.google registrato su un telefono era l'account principale e l'unico account utilizzato da Android Market.Come ottenere l'indirizzo email dell'account dell'acquisto non primario

Sui dispositivi su Android 3.0 e versioni successive non posso più fare affidamento su questo (Account[0]) per ottenere l'indirizzo e-mail del cliente.

C'è un modo per dire quale account account com.google attualmente sta effettuando l'acquisto?

(tutto quello che serve è l'indicenella Account[] array per conto di tipo com.google. Posso ottenere l'indirizzo e-mail una volta che ho il relativo indice)

+0

avete risolto questo? – Mikky

risposta

-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

temo che non è possibile. Da quello che ho trovato sembra che l'account che effettua l'acquisto in-app sia l'account utilizzato per installare l'app, che non conosci. Immagino che potrebbe essere possibile leggerlo dal database dell'applicazione Play Store su telefoni con root.

Sembra che non sia nemmeno possibile trovare l'account di acquisto dopo che l'acquisto è stato effettuato utilizzando lo Google Play Android Developer API, non è sicuro perché sia ​​così.

Se per caso lo trovi, fammelo sapere.

1

Ho appena fatto una rapida ricerca su google e ho trovato questo su questo sito here.

È possibile utilizzare AccountManager.getAccounts o AccountManager.getAccountsByType per ottenere un elenco di tutti i nomi di account sul dispositivo. Fortunatamente, per determinati tipi di account (incluso com.google), i nomi degli account sono indirizzi email. Esempio di snippet di seguito.

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

Si noti che questo richiede il permesso GET_ACCOUNTS:

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

Più sull'uso AccountManager si possono trovare presso il codice di esempio Contact Manager nel SDK.

-1

abeti nome e cognome >> codice java?

e-mail il codice aggiuntivo

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

Suggerirei di dare più spiegazioni. – peterh