Адаптер синхронизации не запущен на Xiaomi

Я написал адаптер синхронизации в Xamarin, но есть проблема под Xiaomi MiUI.

Существует два способа запуска адаптера синхронизации: один - "настройки-> учетные записи-> синхронизация" по телефону, другой - в приложении с помощью ContentResolver.RequestSync().

Прежде всего, мне пришлось включить MiUI AutoStart для моего приложения. В противном случае система безопасности записала ошибку в журнал.

I / AutoStartManagerService: MIUILOG - отклонить службу:Intent { act=android.content.SyncAdapter cmp=com.fingrad.dashboard/.AdapterService (имеет дополнительные функции) } userId: 0 uid: 10186 E/SyncManager: ошибка привязки - цель: ComponentInfo {com.fingrad.dashboard/com.fingrad.dashboard.AdapterService}

Тем не менее, первый метод не работает, если процесс приложения не был уже в памяти телефона. Второй метод не работает, если SyncAdapterService не очистил атрибут Process. Смотрите пример ниже.

[Service(Name = "com.fingrad.dashboard.SyncAdapterService"  
, Exported = true, Process = ":sync")] 
[IntentFilter(new[] { "android.content.SyncAdapter" })] 
[MetaData("android.content.SyncAdapter", Resource = "@xml/syncadapter")] 
class SyncAdapterService : Service

Другими словами, адаптер не работает, если выполняется любое из условий. 1) Служба адаптера имеет атрибут процесса. 2) В памяти телефона нет экземпляра приложения.

Очевидно, что источником проблемы является безопасность MiUI. MiUI запускает адаптер синхронизации, запускает другой процесс, у которого нет разрешения на автозапуск. Я пытался установить "Process=" имя процесса приложения по умолчанию ", но это не помогло.

ОБНОВЛЕНИЕ PS Время прошло, но проблема остается. Redmi Note 4, MIUI 9.5, Android 7 и Redmi Note 3, MIUI 9.5, Android 6.

3 ответа

Решение

Я узнал, как заставить MIUI запустить Sync Adapter. Вы должны сделать следующее:

  1. Открыть Настройки -> Установленное приложение
  2. Выберите ваше приложение
  3. Включить автозапуск
  4. Отключите все ограничения по экономии заряда аккумулятора

введите описание изображения здесь

У вас есть два варианта решения этой проблемы

1 ОДИН


     <service
            android:name="com.example.android.datasync.SyncService"
            android:exported="true"
            android:process=":sync">
        <intent-filter>
            <action android:name="android.content.SyncAdapter"/>
        </intent-filter>
        <meta-data android:name="android.content.SyncAdapter"
                android:resource="@xml/syncadapter" />
     </service>

Удалите android:process=":sync" из манифеста android

2 ДВА

Вам необходимо сделать следующее:

  • Откройте Настройки -> Установленное приложение
  • Выберите ваше приложение
  • Включить автозапуск
  • Выполнено

В дополнение к принятому ответу существует еще один вариант решения проблемы: в параметрах разработчика установите флажок Включить оптимизацию MIUI .

Другие вопросы по тегам