Android可以备份应用程序的数据到远程“云”存储,以应用程序的数据和设置的一个还原点。可以只备份应用程序数据。为了访问其他应用程序的数据,需要以root在手机上操作。
为了使数据备份的应用程序,需要注册使用谷歌备份服务应用程序。这已在实施例进行了说明。注册后必须在AndroidManifest.xml 指定其键值
<application android:allowBackup="true" android:backupAgent="MyBackupPlace"> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" /> </application>
Android提供BackUpAgentHelper类来处理数据备份的所有操作。为了使用这个类,必须使用它的扩展类。它的语法如下:
public class MyBackUpPlace extends BackupAgentHelper { }
要备份的持久性数据无论是哪两种形式。它可以是SharedPrefrences或者它可能是文件。 Android支持两种类型的备份在 SharedPreferencesBackupHelper 和 FileBackupHelper 各自的类。
为了使用SharedPerefernceBackupHelper,需要实例的对象sharedPerefernces文件的名称。它的语法如下:
static final String File_Name_Of_Prefrences = "myPrefrences"; SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);
需要做的最后一件事是通过指定的备份键字符串和辅助对象调用addHelper方法。它的语法如下:
addHelper(PREFS_BACKUP_KEY, helper);
addHelper方法将一个辅助自动添加到给定数据集,以代理的配置。
除了这些方法,也有在 BackupAgentHelper 类中定义的其他方法。它们被定义如下:
Sr.No | Method & description |
---|---|
1 |
onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) 运行备份过程的每个配置处理程序 |
2 |
onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) 运行在每个处理器配置的恢复过程 |
所述SharedPreferencesBackUpHelper类的方法在下面列出。
Sr.No | Method & description |
---|---|
1 |
performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) 备份配置SharedPreferences群体 |
2 |
restoreEntity(BackupDataInputStream data) 还原一个实体的恢复数据流的正确共享的首选项文件存储 |
例子
下面的例子演示了如何使用BackupAgentHelper类来创建应用程序数据的备份。
为了试验这个例子,需要在实际设备或模拟器运行此。
Steps | 描述 |
---|---|
1 | 使用Android Studio创建Android应用程序,并将其命名为Backup。在创建这个项目,确保目标SDK编译在Android SDK最新版本或使用更高级别的API。 |
2 | 注册谷歌备份服务应用程序。 |
3 | 修改AndroidManifest添加相应的必要的密钥和其他组件 |
4 | 在AndroidManifest.xml中指定的名称创建备份代理类 |
5 | 运行应用程序并验证结果 |
注册您的Android应用程序使用谷歌备份服务。为了做到这一点,访问这个链接. 必须同意服务条款,然后输入应用程序包的名称。它如下所示:

然后点击注册与Android备份服务。这会给定钥匙,以及AndroidManifest代码进行复制刚才的键。它如下所示:

复制的键之后,需要写入到AndroidManifest.xml文件。其代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zaixian.backup" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:backupAgent="MyBackUpPlace" android:theme="@style/AppTheme" > <activity android:name="com.zaixian.backup.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" /> </application> </manifest>
这里是BackUpAgentHelper类的代码。在backupAgent标签下的应用程序在AndroidManifest.xml中指定的类的名称应该是相同的
package com.example.backup; import android.app.backup.BackupAgentHelper; import android.app.backup.SharedPreferencesBackupHelper; public class MyBackUpPlace extends BackupAgentHelper { static final String File_Name_Of_Prefrences = "myPrefrences"; static final String PREFS_BACKUP_KEY = "backup"; @Override public void onCreate() { SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences); addHelper(PREFS_BACKUP_KEY, helper); } }
测试BackupAgent
实现备份代理之后,就可以测试备份和恢复功能如以下步骤,使用BMGR。
安装应用程序在一个合适的ANDROID系统映像。
如果使用模拟器,创建和使用AVD采用Android2.2(API等级8级)。
如果使用的设备,设备必须运行Android 2.2或更高版本,并已Google Play内置
保证数据备份是启用
如果使用模拟器,启用备份SDK工具/路径下面的命令:
adb shell bmgr enable true
如果使用的设备,打开系统设置,选择隐私,然后启用备份数据,并自动恢复。
执行备份
出于测试目的,也可以用下面的命令BMGR一个请求:
adb shell bmgr backup your.package.name
通过键入以下命令启动备份操作
adb shell bmgr run
这迫使备份管理器来执行那些在队列中的所有备份请求。
卸载并重新安装应用
卸载使用以下命令应用程序:
adb uninstall your.package.name
然后重新安装应用程序和验证结果