2012-05-15 14 views
7

Wiem, jak znaleźć konta (w tym identyfikatory e-mail użytkowników Gmaila) i jak filtrować konto Gmail.Jak znaleźć konto Gmail powiązane z Android Market?

AccountManager am = AccountManager.get(context); 
     Account[] accounts = am.getAccounts(); 
     ArrayList<String> googleAccounts = new ArrayList<String>(); 
     for (Account ac : accounts) { 
      String acname = ac.name; 
      String actype = ac.type; 
      //add only google accounts 
      if(ac.type.equals("com.google")) { 
       googleAccounts.add(ac.name); 
      } 
      Log.d(TAG, "accountInfo: " + acname + ":" + actype); 
     } 
     return googleAccounts; 

Co chcę wiedzieć, jak znaleźć konto Gmail powiązane z Android Market? Jeśli będziesz próbować usunąć konto Gmail z telefonu Android dostaniesz tę wiadomość enter image description here

ale jeśli spróbujesz usunąć konto Gmail powiązanych z Android Market otrzymasz następujący komunikat (jeśli naciśniesz Usuń konto we wcześniejszym komunikacie).

enter image description here

Dzięki za pomoc.

+0

Masz na myśli podstawowe konto e-mail? sprawdzić http://stackoverflow.com/questions/2112965/how-to-get-the-android-devices-primary-e-mail-address – Ronnie

+1

@ userSeven7s odpowiedź tylko rozmowy o uzyskanie kont na urządzeniu, a nie jeden związany z Android Market. Jak widać, jest różnica. –

+0

Czy to nie konto główne jest powiązane z aplikacją rynkową? – Ronnie

Odpowiedz

2

oknie dialogowym

enter image description here

jest spowodowane przez realizację AbstractAccountAuthenticator#getAccountRemovalAllowed w uwierzytelniania konta Google.

Od tej pory uniemożliwianie wywoływania implementacji AbstractAccountAuthenticator przez zezwolenie tylko dla systemu, to jest trudność w samodzielnym znalezieniu.

+0

Jesteś jednym z chłopaków. Przeczytaj też komentarz tutaj: http: // stackoverflow.com/questions/9801304/android-contentprovider-calls-bursts-of-setnotification-to-cursoradapter-wh. Tylko krótkie pytanie, co masz na myśli przez _system-only permission._ –

+0

Oznacza to, że aby uzyskać wymagane pozwolenie, 'android.permission.ACCOUNT_MANAGER', twoja aplikacja musi być podpisana z tym samym certyfikatem co aplikacje systemowe - skutecznie zapobiega wywoływaniu aplikacji w domu, chyba że masz zrootowane urządzenie. – Jens

+0

Ale mogłem uzyskać zezwolenie 'android.permission.ACCOUNT_MANAGER' w' Używa uprawnień' w Android Manifest. –

0

do „stowarzyszenie” będą zarządzane przez Android Market/Google Play aplikację, a nie sądzę, że ma żadnych publicznych API, które mówią ci, co odpowiada on używa. Ponadto w najnowszych wersjach może używać wielu kont, więc potencjalnie każde konto Google w telefonie może być używane z aplikacją Market/Play Store.

Dlaczego właśnie ty próbujesz to zrobić? Aby móc bezpiecznie usuwać konta? Użytkownik otrzyma odpowiedni komunikat o błędzie, aby mogli zdecydować, czy usunąć konto, czy nie.

+2

Chcę zarejestrować użytkownika w mojej aplikacji na koncie Gmail powiązanym z rynkiem. Gmail powiązany z Market zapewnia, że ​​nie jest często usuwany ani zmieniany. –

+3

OK, rozumiem. Nie sądzę jednak, żeby można było rzetelnie się dowiedzieć. Najlepiej jest użyć pierwszego wymienionego konta Google. Jest ustawiony podczas aktywacji urządzenia i na ogół nie jest usuwany. –

+0

Zgaduję, że masz rację .. :). Poczekajmy kilka dni i zobaczmy, czy ktoś ma jakieś drogi. –

2

Z tego co znalazłem, pierwsza konto google dodany w urządzeniu jest podstawowy adres google, która jest związana z Android Market. Ponadto otrzymujemy konta google w kolejności, w jakiej zostały dodane do urządzenia. Tak więc konta [0] będą pierwszym adresem e-mail dodanym.

String marketAssociatedEmailId = ""; 
Account[] accounts = AccountManager.get(context).getAccountsByType("com.google"); 
if(accounts.length > 0) { 
    marketAssociatedEmailId = accounts[0].name; 
} 

Ponownie, nie jestem tego pewien. Musisz przetestować go sam w różnych scenariuszach.

+1

Mogę zmienić mój adres e-mail na rynku i kupować aplikacje na innym koncie niż mój podstawowy (ten, który po raz pierwszy zalogowałem się na urządzeniu.) Dobrze byłoby wiedzieć, które konto kupiło/pobrało Aplikacja pozwala kontrolować wydech i podobne rzeczy. – Dpedrinha

Powiązane problemy