4

我的设备所有者应用程序出现问题:在 Android 5.1 之前它运行良好,但现在在更新到 Android 5.1 之后,安装设备所有者应用程序会禁用备份服务。

现在在设备设置中,当进入备份和重置选项时,备份服务显示为灰色,表示:备份服务处于非活动状态。这是由您的设备政策设置的

我可以在 google 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);
}

哇...这对我的项目来说是一个严重的缺陷!不开玩笑:现在用户真的不可能在安装设备所有者应用程序的同时备份他的数据吗?

所以,希望这里的人能有关于这方面的信息或经验分享吗?可悲的是,我对此并不熟悉,但也许经过反思,这可以在之后修复?

感谢您的阅读!

4

2 回答 2

5

因为这是设备所有者和备份的热门 Google 搜索

从 Android O 开始,您可以使用DevicePolicyManager

setBackupServiceEnabled (ComponentName admin, Boolean enabled)

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

您可以检查是否启用isBackupServiceEnabled

或者设置

于 2017-04-11T20:38:52.773 回答
0

我遇到了同样的问题,此外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 备份来访问数据: https ://stackoverflow.com/a/30265804/ 3317381

我可以物理访问运行我的应用程序的设备,所以这个解决方案在我的情况下运行良好。我希望这至少有助于在开发环境下恢复您的数据。

于 2016-04-17T15:51:27.683 回答