3

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());

誰かが私のためにこれをトラブルシューティングできますか...ありがとう

4

3 に答える 3

4

あなたはこれを行うことはできません

facebook / gmail/../otherアカウントのオーセンティケーターと同じUIDを使用するアプリケーションのみがこのメソッドを呼び出すことができます。他のアプリケーションは常にエラーメッセージを受け取ります。

のドキュメントはgetPassword()言う:

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

あなたの場合、文の最後の部分が重要だと思います。オーセンティケーターを作成していないアカウントのパスワードを取得しようとしています。オーセンティケーターは、特定のサービスに対して認証する方法を定義します。同じUIDを使用するオーセンティケーターまたはアプリケーションのみがgetPassword()メソッドを呼び出すことができます。この制限により、誰もユーザーのアカウント資格情報を盗むことができないことが保証されます。

于 2012-11-06T07:30:10.110 に答える
2

あなたはAndroid携帯にインストールされているGmailとメールアプリのアカウントの詳細を取得します。つまり、デフォルトのアプリアカウントの詳細だけを取得します。これらのアカウントのパスワードを設定することはできません。ただし、ルート化されたデバイスでは、パスワードを取得します。しかし、ルート化されていないデバイスは、プライバシーに反するため、それを取得することはできません。

コードスニペット。

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>
于 2012-11-06T07:23:11.050 に答える
1

メソッドAPIから:Api

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

于 2012-11-06T07:20:21.867 に答える