2015-07-10 82 views
1

我想備份服務與我的應用程序集成。這是所有工作說得最多的時刻,我打這個電話給:不能使用的備份與Android備份服務

BackupManager bm = new BackupManager(context); 
bm.dataChanged(); 

我看到我的logcat如下:

W/BackupManagerService﹕ dataChanged but no participant pkg='com.company.app' uid=10102 

下面是我實現的BackupAgentHelperhttps://gist.github.com/cloakedninjas/fe135cb04bf324e26b0c是否有幫助?

public class CordovaBackupAgentHelper extends BackupAgentHelper { 
    static final String FILE_NAME = "gameData.json"; 
    static final String FILES_BACKUP_KEY = "data_file"; 

    @Override 
    public void onCreate() { 
     FileBackupHelper helper = new FileBackupHelper(this, FILE_NAME); 
     addHelper(FILES_BACKUP_KEY, helper); 
    } 

    @Override 
    public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, 
         ParcelFileDescriptor newState) throws IOException { 

     Log.d(Backup.LOG_TAG, "Backup requested: " + oldState.toString() + " | " + newState.toString()); 

     synchronized (Backup.sDataLock) { 
      Log.d(Backup.LOG_TAG, "Backup requested: " + data.toString()); 
      super.onBackup(oldState, data, newState); 
     } 
    } 

    @Override 
    public void onRestore(BackupDataInput data, int appVersionCode, 
          ParcelFileDescriptor newState) throws IOException { 

     synchronized (Backup.sDataLock) { 
      Log.d(Backup.LOG_TAG, "Restore given: " + data.toString()); 
      super.onRestore(data, appVersionCode, newState); 
     } 
    } 
} 

我從來沒有看到我的日誌條目Backup requested。我檢查了我的Android清單具有以下屬性android:backupAgent="CordovaBackupAgentHelper"

任何人都可以揭示出這個任意光?

更新

如果我改變我的清單有android:backupAgent="FooBar"我沒有看到關於未申報類FooBar的錯誤,但仍然可以看到dataChanged but no participant pkg試圖備份時,我已經注意到了。所以我的猜測是錯誤與無法找到我的備份代理有關。

回答

0

所以我的問題是沒有把屬性到正確的元素:(

我:

<manifest android:backupAgent="com.cloakedninjas.cordova.plugins.BackupAgentHelper" ...

相反的:

<application android:backupAgent="com.cloakedninjas.cordova.plugins.BackupAgentHelper" ...

0

一對夫婦的建議:

在您的清單,我想備份代理的聲明應該既可以使用全名或「點」簡稱:

android:backupAgent="com.example.project.CordovaBackupAgentHelper" 

android:backupAgent=".CordovaBackupAgentHelper" 

此外,您必須在清單中啓用備份:

android:allowBackup="true" 

說了這麼多,我懷疑這些變化做出警告消息消失。我有一個備份代理,並且無法通過將這些聲明更改爲無效值來創建您看到的警告消息。

如果您使用的是谷歌備份傳輸如Data Backup Guide描述,並添加關鍵看你的表現,你有沒有註冊爲服務?

您是否嘗試過使用adb bmgr工具,看看你的經紀人會被調用,儘管警告消息來觸發備份操作?

+0

所以,是的,嘗試了全名'android:backupAgent =「com.cloakedninjas.cordova.plugins.CordovaBackupAgentHelper」',並添加了'android:allowBackup' att ribute。按照指定的清單中的按鍵,觸發'adb shell bmgr run'幾次。但是,謝謝:) – cloakedninjas

+0

只是想知道,該應用程序需要發佈工作?尚未上傳至Google Play – cloakedninjas

+0

此外,如果您將API密鑰更改爲不正確的內容,是否會產生任何警告? – cloakedninjas