Android - 数据备份
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,也可以是 File。 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 类中还定义了其他方法。 它们定义如下 −
序号 | 方法 & 描述 |
---|---|
1 |
onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) 在每个配置的处理程序上运行备份过程 |
2 |
onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) 在每个配置的处理程序上运行恢复过程 |
下面列出了 SharedPreferencesBackUpHelper 类的方法。
序号 | 方法 & 描述 |
---|---|
1 |
performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) 备份配置的 SharedPreferences 组 |
2 |
restoreEntity(BackupDataInputStream data) 将一个实体从还原数据流还原到其正确的共享首选项文件存储 |
示例
以下示例演示了如何使用 BackupAgentHelper 类来创建应用程序数据的备份。
要试验此示例,您需要在实际设备或模拟器中运行它。
步骤 | 描述 |
---|---|
1 | 您将使用 Android Studio 创建一个 Android 应用程序,并将其命名为 Backup,位于 com.example.backup 包下。 |
2 | 使用 Google 备份服务注册您的应用程序。 |
3 | 修改 AndroidManifest 以添加相应的必要 key 和其他组件 |
4 | 使用您在 AndroidManifest.XML 中指定的名称创建备份代理类 |
5 | 运行应用程序并验证结果 |
使用谷歌备份服务注册你的安卓应用程序。 请访问此链接https://developer.android.com/google/backup/signup.html。您必须同意服务条款,然后输入应用程序包名称。 如下图所示 −
然后点击注册安卓备份服务。 它会为您提供您的密钥以及要复制的 AndroidManifest 代码。 只需复制密钥。 如下图所示 −
复制密钥后,您需要将其写入 AndroidManifest.XML 文件。 其代码如下 −
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.backup" > <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.example.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 类的代码。 该类的名称应与您在 AndroidManifest.XML 中 application 下的 backupAgent 标记中指定的名称相同
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 系统映像上安装您的应用程序。
如果使用模拟器,请创建并使用带有 Android 2.2(API 级别 8)的 AVD。
如果使用设备,该设备必须运行 Android 2.2 或更高版本并内置 Google Play。
确保启用数据备份
如果使用模拟器,您可以使用以下命令从您的 SDK tools/ 路径启用备份 −
adb shell bmgr enable true
如果使用设备,请打开系统设置,选择隐私,然后启用备份我的数据和自动恢复。
执行备份
出于测试目的,您还可以使用以下 bmgr 命令发出请求−
adb shell bmgr backup your.package.name
输入以下命令启动备份操作。
adb shell bmgr run
这会强制备份管理器执行其队列中的所有备份请求。
卸载并重新安装您的应用程序
使用以下命令卸载应用程序 −
adb uninstall your.package.name
然后重新安装应用程序并验证结果。