如何检索Android中所有帐户的密码?

时间:2012-11-06 07:14:18

标签: android

我想检索在我的Android手机中关联的所有帐户(Facebook,Dropbox,Gmail等)的密码...我已尝试过以下编码,但无法获取密码...

    AccountManager am = AccountManager.get(this);
    Account [] acc = am.getAccounts();
    if (acc.length > 0){
        for (int i=0; i<acc.length; i++){
            String password = am.getPassword(acc[i]);
            listedAcc += acc[i] + " Password:" + password.toString() + "\n\n";
        }
        accounts.setText(listedAcc.toString());

有人可以为我解决这个问题吗...谢谢

3 个答案:

答案 0 :(得分:4)

你不能这样做

只有使用与facebook / gmail /../其他帐户的身份验证器相同的UID的应用程序才能调用此方法。其他应用程序将始终收到错误消息。

getPassword()的文档说:

  

此方法要求调用者保留权限   AUTHENTICATE_ACCOUNTS并拥有与帐户相同的UID   认证器。

我认为句子的最后部分对你的情况很重要。您正在尝试获取尚未编写Authenticator的帐户的密码。 Authenticator定义了如何对特定服务进行身份验证。只允许使用相同UID的身份验证器或应用程序调用getPassword()方法。通过此限制,可以确保没有人可以窃取用户的帐户凭据。

答案 1 :(得分:2)

您将获得安装在Android手机中的Gmail和电子邮件应用的帐户详细信息。我的意思是你将单独获得默认的应用帐户详细信息。 你将无法获得这些帐户的密码。 但是在root设备中你会获得密码。  但无根设备不会让你抓住它,因为它反对隐私。

代码段。

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
String gmail = null;

    for(Account account: list)
    {
        if(account.type.equalsIgnoreCase("com.google"))
        {
            gmail = account.name;
            break;
        }
    }

需要使用权限:

    <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>

答案 2 :(得分:1)

从方法API:Api

此方法要求调用者持有权限AUTHENTICATE_ACCOUNTS并拥有与帐户验证者相同的UID。