2015-05-20 94 views
1

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

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

我能找到的谷歌的Git仓库this source设置...该代码不是很长,易于理解,他们使用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); 
} 

哇......这对我的项目造成严重的缺陷!没有开玩笑:现在真的不可能让用户在安装设备所有者App时备份他的数据吗?

那么,希望这里有人可以有信息或经验来分享这个?可悲的是我不熟悉这个,但也许与反射这可能会被修复后?

谢谢您的阅读!

+0

我还应该添加一个重要信息:配置设备时,优先于5.1我必须设置我的谷歌帐户,如果需要选择恢复选项,然后应用NFC配置光束...现在必须应用NFC * *之前*谷歌帐户,否则一旦谷歌帐户设置它说已经太迟了设备已配置...这个问题可能与这种新的行为有关,但如何避免这种...? – JBA

回答

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

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