从Android帐户获取密码

时间:2010-11-16 11:01:05

标签: android email passwords

我注意到从Android API,他们有这个方法getPassword(Account account)

accountManager = AccountManager.get(this);

Account[] allGoogleAccounts = accountManager.getAccountsByType("com.google");

for (Account account : allGoogleAccounts) 

{
  System.out.println(accountManager.getPassword(account));
}

但我有这个错误:

11-16 10:49:08.986: WARN/System.err(5732): java.lang.SecurityException: caller uid 10039 is different than the authenticator's uid
11-16 10:49:09.038: WARN/System.err(5732):     at android.os.Parcel.readException(Parcel.java:1247)
11-16 10:49:09.038: WARN/System.err(5732):     at android.os.Parcel.readException(Parcel.java:1235)
11-16 10:49:09.045: WARN/System.err(5732):     at android.accounts.IAccountManager$Stub$Proxy.getPassword(IAccountManager.java:415)
11-16 10:49:09.087: WARN/System.err(5732):     at android.accounts.AccountManager.getPassword(AccountManager.java:277)
11-16 10:49:09.087: WARN/System.err(5732):     at com.test.account.onCreate(account.java:30)
11-16 10:49:09.107: WARN/System.err(5732):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-16 10:49:09.107: WARN/System.err(5732):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-16 10:49:09.125: WARN/System.err(5732):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-16 10:49:09.125: WARN/System.err(5732):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-16 10:49:09.134: WARN/System.err(5732):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-16 10:49:09.156: WARN/System.err(5732):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-16 10:49:09.156: WARN/System.err(5732):     at android.os.Looper.loop(Looper.java:123)
11-16 10:49:09.166: WARN/System.err(5732):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-16 10:49:09.175: WARN/System.err(5732):     at java.lang.reflect.Method.invokeNative(Native Method)
11-16 10:49:09.185: WARN/System.err(5732):     at java.lang.reflect.Method.invoke(Method.java:521)
11-16 10:49:09.185: WARN/System.err(5732):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-16 10:49:09.195: WARN/System.err(5732):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-16 10:49:09.206: WARN/System.err(5732):     at dalvik.system.NativeStart.main(Native Method)

任何人都可以告诉我我的错误吗?

2 个答案:

答案 0 :(得分:3)

来自AccountManager.getPassword()

  

getPassword:   此方法要求来电者保留权限AUTHENTICATE_ACCOUNTS并与帐户的身份验证人具有相同的UID

我看到它的方式如果您的应用是在帐户管理器中创建帐户的应用程序(可能会误会),您只能获取密码

答案 1 :(得分:1)

在客户经理中,如果您(您的应用)编写了该帐户,那么只有您(您的应用)才能获得密码,这是因为应用程序可以获得用户在其他应用中同步的用户密码的安全性< / p>

您可以获取流程创建的帐户的密码 UID 每个进程拥有 UID 一旦在设备上运行并继续具有相同的密码 UID 永远