5

私はAndroid用のGMailクライアントを書いています。ListViewにすべてのGMailアカウントを一覧表示したい。ユーザーが1つの項目をクリックしたときに、対応するアカウントのパスワードをプログラムに取得させたい。

ただし、SecurityExceptionが発生します。

java.lang.SecurityException: caller uid 10107 is different than the authenticator's uid

これは私のコードです:

AccountManager accountManager = AccountManager.get(context);

this.username = account.name;
this.password = accountManager.getPassword(account); //this is where I get the exception

私はAndroidManifest.xmlでこれらすべての権限を持っています:

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Androidのリファレンスによると、必要な権限はMANAGE_ACCOUNTSのみです。

私のコードの問題は何ですか?

4

1 に答える 1

4

authtokenを取得することはできますが、ユーザーに実際の資格情報を取得することはできません。実際のクレジットには、それらを作成したアプリケーションからのみアクセスできます。getPasswordメソッドのドキュメントから(私の強調):

このメソッドでは、呼び出し元がAUTHENTICATE_ACCOUNTS権限を保持し、アカウントのオーセンティケーターと同じUIDを持っている必要があります。

于 2011-10-03T19:39:08.587 に答える