2012-01-24 11 views
17

Przed wprowadzeniem systemu Android 3.0 pierwsze konto zarejestrowane na telefonie było kontem podstawowym i jedynym kontem używanym przez usługę Android Market.Jak uzyskać adres e-mail konta podstawowego innego niż podstawowy

Na urządzeniach z Androidem 3.0 lub nowszym nie mogę już polegać na tym (Account[0]), aby uzyskać adres e-mail klienta.

Czy istnieje sposób, aby powiedzieć , które konto kontojest obecnie dokonywane zakupu?

(wszystko czego potrzebuję to indeks do tablicy Account[] dla konta typu com.google. Mogę uzyskać adres e-mail, gdy mam odpowiedni indeks)

+0

Czy rozwiązać ten problem? – Mikky

Odpowiedz

-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

Obawiam się, że nie jest to możliwe. Z tego co znalazłem wygląda na to, że konto dokonujące zakupu w aplikacji to konto używane do instalacji aplikacji, której nie znasz. Wydaje mi się, że możliwe jest odczytanie go z bazy danych aplikacji Sklep Play na telefonach zrootowanych.

Wygląda na to, że nie można nawet znaleźć konta zakupu po dokonaniu zakupu przy użyciu numeru Google Play Android Developer API, ale nie wiadomo, dlaczego tak się dzieje.

Jeśli przypadkiem się o tym dowiesz, daj mi znać.

1

Właśnie zrobiłem szybkie wyszukiwanie google i natrafiłem na to na tej stronie here.

Możesz użyć AccountManager.getAccounts lub AccountManager.getAccountsByType, aby uzyskać listę wszystkich nazw kont na urządzeniu. Na szczęście dla niektórych typów kont (w tym com.google) nazwy kont są adresami e-mail. Przykładowy fragment poniżej.

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

Zauważ, że wymaga to zgody GET_ACCOUNTS:

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

Więcej na temat korzystania AccountManager można znaleźć w kodzie Contact Manager próbki w SDK.

-1

jodły imię i nazwisko >> kod java?

email code Dodaj

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

Proponuję podać więcej wyjaśnień. – peterh

Powiązane problemy