2011-10-03 103 views
5

我正在爲Android編寫GMail客戶端。我想列出ListView中的所有GMail帳戶。當用戶點擊一個項目時,我希望程序檢索相應帳戶的密碼。android從客戶經理獲取gmail用戶名和密碼

不過,我得到一個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 reference ,唯一需要的權限應該是MANAGE_ACCOUNTS。

我的代碼有什麼問題?

回答

4

您可以獲得authtoken,但無法獲取用戶的實際憑據。實際的信用額度只能由創建它們的應用程序訪問。從getPassword方法來(重點煤礦)的文檔:

這種方法需要調用者持有許可AUTHENTICATE_ACCOUNTS並有相同的UID作爲帳號的身份驗證

+1

聽起來很好,知道這一點。我認爲我現在更安全。謝謝庫蒂斯。 – b101101011011011