不能使用的备份与Android备份服务

问题描述:

我想备份服务与我的应用程序集成。这是所有工作说得最多的时刻,我打这个电话给:不能使用的备份与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试图备份时,我已经注意到了。所以我的猜测是错误与无法找到我的备份代理有关。

所以我的问题是没有把属性到正确的元素:(

我:

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

相反的:

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

一对夫妇的建议:

在您的清单,我想备份代理的声明应该既可以使用全名或“点”简称:

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