我正在尝试将备份服务与我的应用集成。直到我打电话的那一刻,这一切都在发挥作用:
BackupManager bm = new BackupManager(context);
bm.dataChanged();
我在Logcat中看到以下内容:
W/BackupManagerService﹕ dataChanged but no participant pkg='com.company.app' uid=10102
如果BackupAgentHelper
https://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 :(得分:0)
一些建议:
在您的清单中,我认为备份代理的声明应使用全名或" dot"简短形式:
android:backupAgent="com.example.project.CordovaBackupAgentHelper"
或
android:backupAgent=".CordovaBackupAgentHelper"
此外,您必须在清单中启用备份:
android:allowBackup="true"
话虽如此,我怀疑这些变化会使警告信息消失。我有一个备份代理,并且无法通过将这些声明更改为无效值来创建您看到的警告消息。
如果您使用的是Google备份传输,请按照Data Backup Guide中的说明注册该服务,并将密钥添加到您的清单中吗?
您是否尝试使用adb bmgr
工具触发备份操作,以查看是否在遇到警告消息时调用了代理?