Владелец устройства теперь отключает службу резервного копирования

У меня была проблема с моим приложением для владельца устройства: до Android 5.1 оно работало нормально, но теперь после обновления до Android 5.1 установка приложения для владельца устройства отключает службу резервного копирования.

Теперь в настройках устройства, при переходе в опцию "Резервное копирование и сброс", служба " Резервное копирование" неактивна и говорит: " Служба резервного копирования неактивна". Это устанавливается политикой вашего устройства

Я мог бы найти этот источник в git git-репозитории... Код не очень длинный и простой для понимания, они используют android.app.backup.IBackupManager для отключения службы... Но проще коммитить комментарий:

Завершите работу службы менеджера резервного копирования, когда указан владелец устройства

Вот что они делают:

import android.app.backup.IBackupManager;

// Shutting down backup manager service permanently.
long ident = Binder.clearCallingIdentity();
try {
    IBackupManager ibm = IBackupManager.Stub.asInterface(
        ServiceManager.getService(Context.BACKUP_SERVICE));
    ibm.setBackupServiceActive(UserHandle.USER_OWNER, false);
} catch (RemoteException e) {
    throw new IllegalStateException("Failed deactivating backup service.", e);
} finally {
    Binder.restoreCallingIdentity(ident);
}

Ого... это серьезный недостаток для моего проекта! Без шуток: неужели для пользователя теперь невозможно создать резервную копию своих данных, пока установлено приложение для владельца устройства?

Итак, надеюсь, у кого-то здесь есть информация или опыт, которыми можно поделиться по этому поводу? К сожалению, я не знаком с этим, но, возможно, с отражением это может быть исправлено позже?

Спасибо за чтение!

2 ответа

Потому что это лучший поиск Google для владельца устройства и резервного копирования

Начиная с Android O, вы можете включить его, используя DevicePolicyManager

setBackupServiceEnabled (ComponentName admin, Boolean enabled)

https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html

Вы можете проверить, если позволяет с isBackupServiceEnabled

Или установите это

У меня возникла та же проблема, кроме того, резервное копирование adb не будет запускаться из-за отказа в соединении (я предполагаю, что служба резервного копирования не работает). Так же, как ссылка, это одна из ошибок, которые я видел в logcat:

W/main(22253): type=1400 audit(0.0:106): avc: denied { ioctl } for path="socket:[76146]" dev="sockfs" ino=76146 ioctlcmd=7704 scontext=u:r:shell:s0tcontext=u:r:adbd:s0 tclass=unix_stream_socket permissive=0

Хотя я до сих пор не понял, как перезапустить службу резервного копирования (и я верю, что есть способ), я нашел очень полезную альтернативу резервному копированию adb для доступа к данным: /questions/20149033/prosmotr-soderzhimogo-fajla-bazyi-dannyih-v-android-studio/20149039#20149039

У меня есть физический доступ к устройствам, на которых запущено мое приложение, поэтому в моем случае это решение хорошо работает. Надеюсь, это поможет хотя бы восстановить ваши данные в среде разработки.

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