对于我的Android,我试图遵循并实现Android数据备份指南( http://developer.android.com/guide/topics/data/backup.html ),但是数据备份和恢复不起作用。有人能帮忙举例子吗?
发布于 2016-02-18 20:13:16
经过进一步的研究,我找到了实现Android数据备份和恢复的步骤。它们是:
android:allowBackup="true" (这将启用Android的数据备份服务)
b. meta-data android:name="com.google.android.backup.api_key" android:value=”{Your unique Registration Key for Android Backup Service}” (必须将应用程序包名称注册到备份服务中。若要生成密钥,请转到http://developer.android.com/google/backup/signup.html )
android:backupAgent=”.MyBackupAgent” (这是实现您声明的备份代理类的类的名称)。Note1:这个名字的第一个字符是一个句号,用来快速定位你的“com.example.project.MyBackupAgent”。Note2:如果出现运行时异常(根据项目结构的不同,这可能发生或不发生),例如: java.lang.ClassNotFoundException: Note2“com.example.project.MyBackupAgent”,那么我建议您解压缩apk (将apk包上传到http://www.decompileandroid.com/中),搜索到MyBackupAgent的绝对路径,并插入android:backupAgent=“{绝对路径}.MyBackupAgent”的路径。下面是一个支持备份的Manifest xml文件的示例:
Android:value=“{您的唯一注册密钥}”/>
下面是一个用于SharedPreferenceBackupHelper类的MyBackupAgent示例:
import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
import android.util.Log;
public class MyBackupAgent extends BackupAgentHelper{
static final String PREFS = "myprefs";
static final String PREFS_BACKUP_KEY = "myprefs";
@Override
public void onCreate() {
Log.i("MyFileBackupAgent", "****** Enter BACKUP CLASS *******");
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
addHelper(PREFS_BACKUP_KEY, helper);
Log.i("MyFileBackupAgent", "****** Exit BACKUP CLASS ********");
}
}下面是一个用于C#类的FileBackupHelper示例:
public class MyBackupAgent: BackupAgentHelper
{
string myProtectData = "File.bin";
string myPersistentData = "Data.bin";
string myDBase = "Database.db";
public override void OnCreate()
{
Console.WriteLine ("****** Enter Backup Files Helpers *********");
base.OnCreate ();
try
{
FileBackupHelper dbkh = new FileBackupHelper (this, myProtectData);
this.AddHelper ("PROTECT_backup", dbkh);
FileBackupHelper persisth = new FileBackupHelper (this, myPersistentData);
this.AddHelper ("PERSIST_backup", persisth);
FileBackupHelper dbh = new FileBackupHelper (this, myDBase);
this.AddHelper ("DATABASE_backup", dbh);
Console.WriteLine ("********* All 3 files backuped *********");
}
catch {
Console.WriteLine ("******* Backup AddHelper Exception ERROR *********");
}
Console.WriteLine ("******** Exit Backup Files Helpers ********");
}
public override void OnBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
{
Console.WriteLine ("****** Override OnBackup called ******");
base.OnBackup(oldState, data, newState);
}
public override void OnRestore (BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)
{
Console.WriteLine ("****** Override OnRestore called ******");
base.OnRestore(data, appVersionCode, newState);
}
} 出于测试目的,可以使用Android命令提示符工具执行立即备份。尝试以下命令:
以确保启用数据备份:
亚行外壳bmgr启用true
请求数据备份:
亚行外壳bmgr备份
启动数据备份的:
亚行shell bmgr运行
卸载应用程序的:
亚行卸载
然后安装应用程序:
亚行安装
https://stackoverflow.com/questions/35491412
复制相似问题