Android 如何实现安卓&x2019;s数据备份服务

Android 如何实现安卓&x2019;s数据备份服务,android,Android,对于我的Android项目,我试图遵循并实施Android开发者数据备份指南(),但数据备份和恢复不起作用。有人能帮我举个例子吗?经过进一步的调查,我找到了实现Android数据备份和恢复的步骤。它们是: 在清单xml文件中添加以下内容: aandroid:allowBackup=“true”(这将启用android的数据备份服务) b元数据android:name=“com.google.android.backup.api\u key” android:value=“{android备份服务

对于我的Android项目,我试图遵循并实施Android开发者数据备份指南(),但数据备份和恢复不起作用。有人能帮我举个例子吗?

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

  • 在清单xml文件中添加以下内容:
    a
    android:allowBackup=“true”
    (这将启用android的数据备份服务)
    b<代码>元数据android:name=“com.google.android.backup.api\u key” android:value=“{android备份服务的唯一注册密钥}”(您必须向备份服务注册应用程序包名称。若要生成密钥,请转到)
    c
    android:backupAgent=“.MyBackupAgent”
    (这是实现您声明的备份代理类的类的名称)。注1:名称的第一个字符是一个句点,用于简写查找“com.example.project.MyBackupAgent”。注2:如果发生运行时异常(这可能会发生,也可能不会发生,取决于您的项目结构),例如:java.lang.ClassNotFoundException:未找到类“com.example.project.MyBackupAgent”,则我建议您反编译apk(在中上载apk包)然后搜索MyBackupAgent的绝对路径,并为android插入此路径:backupAgent=“{absolute path}.MyBackupAgent”
  • 下面是一个支持备份的清单xml文件示例:

    下面是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(),Backup Manager服务就会每小时响应一次 出于测试目的,可以使用Android SDK命令提示符工具执行即时备份。请尝试以下命令:

    确保启用数据备份:

    adb外壳bmgr启用true

    请求数据备份:

    adb外壳bmgr备份

    启动数据备份:

    亚行壳牌bmgr运行

    卸载应用程序:

    亚洲开发银行卸载

    然后安装你的应用程序

    亚洲开发银行安装

  • 您的手机设备备份设置如何?确保已建立WiFi连接。此外,在“设备设置”下,确保选中“备份我的数据”和“自动还原”,并且您已输入有效的备份帐户电子邮件id

  • 最后,要跟踪您的备份上载时间戳,请使用(这是您的个人谷歌帐户,与您的Android手机设备备份设置中的谷歌帐户相匹配)


  • 这是我找到的最好的样本:
    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 ********");
    
        }
    
    }
    
    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);  
        }  
    }