Привет, У меня есть вопрос, связанный с менеджером аккаунта Android .. Мое приложение внедряет в него учетную запись, поэтому она доступна и другим приложениям, установленным на устройстве. Я думал, что, как только какое-либо приложение будет запрашивать у системы данные, хранящиеся в учетной записи, сначала нужно спросить пользователя (классический андроид с двумя кнопками, который сообщает пользователю, что приложение хочет получить доступ к учетной записи). Тем не менее, я попробовал прямо сейчас, я написал простое приложение, целью которого является только заполнение хранимого токена аутентификации у менеджера аккаунта. Это сработало. Он отлично работает, за исключением того, что не было никакого шага, запрашивающего у пользователя разрешения, он просто показывает токен. Как мне настроить учетную запись, чтобы она не была общедоступной?Отключить тихий доступ к учетной записи в менеджере аккаунта из сторонних приложений
Ниже приведен код, используемый для доступа к учетной записи. Я использовал только тип учетной записи и тип токена. Это все.
AccountManager accountManager = AccountManager.get(this);
assert accountManager != null;
Account[] kosAccounts = accountManager.getAccountsByType("account_type");
if(kosAccounts.length < 1) tokenView.setText("no account");
else{
accountManager.getAuthToken(kosAccounts[0],"token_type",null, this, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
try {
Bundle result = future.getResult();
if(result == null) tokenView.setText("problem");
else{
tokenView.setText(result.getString(AccountManager.KEY_AUTHTOKEN));
}
} catch (OperationCanceledException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (AuthenticatorException e) {
e.printStackTrace();
}
}
}, new Handler());
}
И этот код я использую для создания учетной записи (из другого приложения) .. это фактически урезанная версия кода, я удалил всю информацию о загромождали вам не нужно, чтобы помочь мне :)
final AccountManager accountManager = AccountManager.get(getApplicationContext());
final String username = getUserDataResponse.getString("username");
final String authToken = getUserDataResponse.getString("token"); // null pointer
final Account account = new Account(username, AuthenticatorConfig.ACCOUNT_TYPE);
accountManager.addAccountExplicitly(account, null, null);
accountManager.setAuthToken(account, AuthenticatorConfig.AUTH_TOKEN_TYPE, authToken);
Спасибо, смешно, я нашел ваш ответ. Точно, что мне нужно :) –