2012-05-15 16 views
7

私はアカウントの検索方法(ユーザーのGmailメールIDを含む)とGmailアカウントのフィルター方法を知っています。Androidマーケットに関連付けられているGmailアカウントを見つけるにはどうすればよいですか?

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; 

私が知りたいことは、Androidマーケットに関連付けられたGmailアカウントを見つける方法です。あなたは、Androidの携帯電話からGmailアカウントを削除しようとする場合は、このメッセージ enter image description here

を取得しますが、あなたは、Androidマーケットに関連付けられているGmailアカウントを削除しようとする場合は、削除アカウントを押した場合には、(次のメッセージが表示されます以前のメッセージで)。助けのための

enter image description here

感謝。

+0

あなたはプライマリメールアカウントを意味していますか?これをチェックしてくださいhttp://stackoverflow.com/questions/2112965/how-to-get-the-android-devices-primary-e-mail-address – Ronnie

+1

@ userSeven7s答えは、 1つはAndroidマーケットに関連付けられています。ご覧のとおり、違いがあります。 –

+0

市場アプリに関連付けられている主要なアカウントではありませんか? – Ronnie

答えて

2

ダイアログ

enter image description here

は、Googleアカウントの認証システムにおけるAbstractAccountAuthenticator#getAccountRemovalAllowedの実装によって引き起こされます。

システム専用のアクセス許可android.permission.ACCOUNT_MANAGERによって、AbstractAccountAuthenticatorの呼び出しの実装が直接防止されるため、これを自分で見つけるのは難しいでしょう。

+0

あなたは男の一体だ。 http:// stackoverflowでコメントしてください。com/questions/9801304/android-contentprovider-calls-burst-of-setnotificationuri-to-cursoradapter-wh。 _ysystem-onlyの許可で何を意味するのでしょうか?_ –

+0

これは、必要なアクセス許可を取得するためには、 'android.permission.ACCOUNT_MANAGER'を実行するためには、システムアプリケーションと同じ証明書でアプリケーションを署名する必要があります。あなたがあなたのデバイスを根づかない限り自家製のアプリがそれを呼び出すのを効果的に防ぎます。 – Jens

+0

しかし、Android Manifestの 'Uses Permission'に' android.permission.ACCOUNT_MANAGER'の許可を与えることができました。 –

0

「関連付け」はAndroid Market/Google Playアプリケーションで管理されますが、どのアカウントを使用しているかを示す公開APIはありません。また、最近のバージョンでは複数のアカウントを使用できるため、携帯電話のGoogleアカウントをMarket/Playストアアプリで使用することができます。

なぜこれを正確に実行しようとしていますか?安全にアカウントを削除できるようにするには?ユーザーには適切なエラーメッセージが表示されるため、アカウントを削除するかどうかを判断できる必要があります。

+2

マーケットに関連付けられたgmailアカウントを使用して、自分のアプリにユーザーを登録したいとします。マーケットに関連付けられているGmailでは、Gmailが頻繁に削除されたり変更されたりすることはありません。 –

+3

OK、わかりました。私は確かにそれを見つけることは可能だとは思わない。最善の策は、おそらく最初にリストされたGoogleアカウントを使用することです。デバイスをアクティブにするときに設定され、通常は削除されません。 –

+0

私はあなたが正しいと思う.. :)。私たちは数日待って、誰かに何らかの方法があるかどうかを見てみましょう。 –

2

私が見つけたことから、デバイスに追加された最初のGoogleアカウントは、アンドロイドマーケットに関連付けられている主要なGoogleアドレスです。また、デバイスに追加された順にGoogleアカウントを取得します。したがって、accounts [0]は最初に追加されたemail-Idになります。

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

もう一度これについてはわかりません。さまざまなシナリオで自分でテストする必要があります。

+1

私は市場で自分の電子メールアドレスを変更し、私のプライマリとは別のアカウントでアプリを購入することができます(最初にデバイスにログインしたアカウントです。 app。だから私たちは、有効期限と同様のものを制御することができます。 – Dpedrinha

関連する問題