Android получить Gmail имя пользователя и пароль от менеджера аккаунта - PullRequest
5 голосов
/ 03 октября 2011

Я пишу клиент GMail для Android.Я хочу перечислить все учетные записи GMail в ListView.Когда пользователь щелкает один элемент, я хочу, чтобы программа получила пароль соответствующей учетной записи.

Однако я получаю исключение 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 , единственное необходимое разрешение должно быть MANAGE_ACCOUNTS.

В чем проблема моего кода?

1 Ответ

4 голосов
/ 03 октября 2011

Вы можете получить авторизацию, но вы не можете получить действительные учетные данные пользователей. Фактически кредиторы доступны только приложению, которое их создало. Из документации метода getPassword (выделено мое):

Этот метод требует от вызывающего абонента иметь разрешение AUTHENTICATE_ACCOUNTS и иметь такой же UID, что и аутентификатор учетной записи .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...