如何实现Android的数据备份服务

3

这是我找到的最好的示例:https://android.googlesource.com/platform/development/+/0b3758ea4e53f9bfd0b112eaa4a7dd7b7f4040f5/samples/BackupRestore - live-love
1个回答

2
经过进一步调查,我找出了实施 Android 数据备份和恢复的步骤。它们是:
在Manifest xml文件中添加以下内容:
  1. 添加android:allowBackup="true" (这将启用Android的数据备份服务)
  2. 添加 meta-data android:name="com.google.android.backup.api_key" android:value=”{你的Android备份服务的唯一注册密钥}” (你必须使用备份服务注册你的应用程序包名称。要生成密钥,请转到http://developer.android.com/google/backup/signup.html
  3. 添加android:backupAgent=”.MyBackupAgent”(这是实现你声明的备份代理类的类名)。注意:名字的第一个字符是一个点,目的是为了缩写来定位你的“com.example.project.MyBackupAgent”。如果发生运行时异常(这可能取决于你的项目结构),例如:java.lang.ClassNotFoundException: 没有找到类“com.example.project.MyBackupAgent”,那么建议你反编译你的apk(上传你的apk包到http://www.decompileandroid.com/),并搜索你的MyBackupAgent的绝对路径,并将此路径插入到android:backupAgent=”{absolute path}.MyBackupAgent”中。
这是一个带备份支持的 Manifest xml 文件示例:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.project">  
<application  android:allowBackup="true" android:backupAgent="md5f576d3976d691fac04b078d1718cab3.MyBackupAgent">
   <meta-data android:name="com.google.android.backup.api_key" >android:value="{Your unique Registration Key}" />
</application> 
英译中:
  1. 在项目中添加您的MyBackupAgent类。 BackupAgentHelper类提供了一个便捷的包装器,围绕BackupAgent类,这最小化了您需要编写的代码量。 在您的BackupAgentHelper中,您必须使用一个或多个“helper”对象,它们自动备份和恢复某些类型的数据,因此您不需要实现onBackup()和onRestore()。 注意:Android目前提供备份助手,将备份和还原SharedPreferences和内部存储中的完整文件。

这是一个Java 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 ********");

    }

}

这是一个针对MyBackupAgent类的C# Xamarin 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);  
    }  
}   

要执行备份,您的代码应通过调用dataChanged()方法发出备份请求。备份请求不会立即调用onBackup()方法。相反,备份管理器等待适当的时间*,然后为自上次备份以来请求备份的所有应用程序执行备份。请注意,只要在上一个数据备份请求之后的一小时内至少调用了一个DataChanged()方法,备份管理器服务就会每小时响应一次。
为测试目的,可以使用Android SDK命令提示工具立即执行备份。尝试以下命令: 确保启用数据备份: adb shell bmgr enable true 请求数据备份: adb shell bmgr backup 启动数据备份: adb shell bmgr run 卸载您的应用程序: adb uninstall 然后安装您的应用程序: adb install
4. 你的手机备份设置如何?确保已建立 WiFi 连接。同时,在设备设置中,确保已勾选“备份我的数据”和“自动还原”,并输入了有效的备份账户电子邮件地址。 5. 最后,要跟踪备份上传时间戳,请使用 www.google.com/settings/dashboard(这是与您的 Android 手机设备备份设置匹配的个人 Google 帐户)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接