Исключение безопасности для адаптера синхронизации Android - PullRequest
0 голосов
/ 27 июня 2018

Error

Причина: java.lang.SecurityException: uid 10184 не может получить секреты для счетов типа:

Код

    @Nullable
    public static Account getSyncAccount(Context context)
    {
    AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);

    Account newAccount  = new Account(context.getString(R.string.app_name), context.getString(R.string.content_authority));

    assert accountManager != null;
    if(null == accountManager.getPassword(newAccount))
    {
if(!accountManager.addAccountExplicitly(newAccount,"",null))  //Error here
        {
            return null;
        }
        onAccountCreated(newAccount,context);
    }

    return newAccount;
}

Сервис аутентификации

    <service android:name=".sync.ProductAuthenticatorService">
        <intent-filter>

            <action android:name="android.accounts.AccountAuthenticator"/>
        </intent-filter>
        <meta-data android:name="android.accounts.AccountAuthenticator"
            android:resource="@xml/authenticator"/>
    </service>


    <!-- Sync Adapter Service -->
    <service android:name=".sync.ProductSyncService"
        android:exported="true"
        >
    <intent-filter>
        <action android:name="android.content.SyncAdapter"/>

    </intent-filter>
    <meta-data android:name="android.content.SyncAdapter"
        android:resource="@xml/syncadapter"/>
    </service>

1 Ответ

0 голосов
/ 27 июня 2018

Добавление

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

К вашему Манифесту нужно решить ваш SecurityException.

(Начиная с Android 6.0 (уровень API 23), если приложение совместно использует подпись аутентификатора, который управляет учетной записью, ему не нужно разрешение «GET_ACCOUNTS» для чтения информации об этой учетной записи. На Android 5.1 и ниже все приложениям необходимо разрешение «GET_ACCOUNTS» для чтения информации о любом аккаунте.)

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