2011-10-03 78 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

相关问题