2015-05-20 60 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

我要運行我的應用程序使這個解決方案工作得很好,我的情況下設備的物理訪問。我希望這有助於在開發環境下至少恢復您的數據。