首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现Android的数据备份服务

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

Stack Overflow用户
提问于 2016-02-18 20:07:27
回答 1查看 3.4K关注 0票数 3

对于我的Android,我试图遵循并实现Android数据备份指南( http://developer.android.com/guide/topics/data/backup.html ),但是数据备份和恢复不起作用。有人能帮忙举例子吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-18 20:13:16

经过进一步的研究,我找到了实现Android数据备份和恢复的步骤。它们是:

  1. 在Manifest xml文件中添加以下内容: a. 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=“{您的唯一注册密钥}”/>

  1. 添加项目您的MyBackupAgent类。BackupAgentHelper类为BackupAgent类提供了一个方便的包装器,从而最小化了需要编写的代码量。在BackupAgentHelper中,您必须使用一个或多个“助手”对象,该对象自动备份和还原某些类型的数据,因此不需要实现onBackup()和onRestore()。注意: Android目前提供备份帮助程序,可以从SharedPreferences和内部存储中备份和恢复完整的文件。

下面是一个用于SharedPreferenceBackupHelper类的MyBackupAgent示例:

代码语言:javascript
复制
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示例:

代码语言:javascript
复制
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);  
    }  
}   
  1. 要执行备份,代码应该通过调用dataChanged()来发出备份请求。备份请求不会导致立即调用onBackup()方法。相反,备份管理器等待适当的时间*,然后对执行上次备份后请求备份的所有应用程序执行备份。注意,备份管理器服务每小时响应一次,只要在上次数据备份请求之后的一个小时内至少调用一个DataChanged()。

出于测试目的,可以使用Android命令提示符工具执行立即备份。尝试以下命令:

以确保启用数据备份:

亚行外壳bmgr启用true

请求数据备份:

亚行外壳bmgr备份

启动数据备份的

亚行shell bmgr运行

卸载应用程序的

亚行卸载

然后安装应用程序

亚行安装

  1. 你的手机设备备份设置呢?确保建立了WiFi连接。此外,在设备设置下,确保“备份我的数据”和“自动恢复”被选中,并且您已经输入了一个有效的备份帐户电子邮件id。
  2. 最后,要跟踪备份上传时间戳,请使用Www.google.com/settings/仪表板 (这是您的个人google帐户,它与您的Android手机设备备份设置中的google帐户匹配)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35491412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档