Android 简明教程

Android - Data Backup

Android 允许您将应用程序数据备份到远程“云”存储,以便为应用程序数据和设置提供还原点。您只能备份自己的应用程序数据。要访问其他应用程序数据,您需要对手机进行 root。

要制作数据备份应用程序,您需要将应用程序注册到 Google Backup 服务。该部分已在本示例中进行了解释。注册后,您必须在 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 {
}

您要备份的持久数据应采用两种形式中的一种。它可以是 SharedPreferences,也可以是 File。Android 分别在 SharedPreferencesBackupHelperFileBackupHelper 类的支持下,支持这两种类型的备份。

要使用 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) 将一个实体从还原数据流还原到其正确的共享首选项文件存储中

Example

以下示例演示如何使用 BackupAgentHelper 类创建应用程序数据的备份。

要尝试本示例,您需要在实际设备或模拟器上运行它。

Steps

Description

1

你将使用 Android Studio 创建一个 Android 应用程序,并将其命名为 Backup,并置于包 com.example.backup 下。

2

使用 Google 备份服务注册应用程序。

3

修改 AndroidManifest,添加必要的键和其他组件

4

创建你指定在 AndroidManifest.XML 中的名称的备份代理类

5

运行应用程序并验证结果

使用 Google 备份服务注册你 Android 应用程序。为此, visit this link 。你必须同意服务条款,然后输入应用程序包名称。如下图所示:

android backup1

然后,单击“使用 Android 备份服务注册”。它会给你你的密钥以及 AndroidManifest 代码可供复制。只需复制密钥。如下图所示:

android backup2

一旦你复制了密钥,你就需要在 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);
   }
}

Test your BackupAgent

一旦你实现备份代理,你可以使用以下过程和 bmgr 测试备份和恢复功能。

Install your application on a suitable Android system image.

如果使用模拟器,请创建一个使用 Android 2.2(API 级别 8)的 AVD。

如果使用设备,该设备必须运行 Android 2.2 或更高版本,并且已经内置 Google Play。

Ensure data backup is enabled

如果你使用模拟器,你可以使用 SDK 工具/路径执行以下命令以启用备份:

adb shell bmgr enable true

如果使用设备,打开系统设置,选择“隐私”,然后启用“备份我的数据”和“自动恢复”。

Performing backup

出于测试目的,您还可以使用以下 bmgr 命令发出请求−

adb shell bmgr backup your.package.name

通过键入以下命令启动备份操作。

adb shell bmgr run

这会强制备份管理器执行其队列中的所有备份请求。

Uninstall and reinstall your application

使用以下命令卸载应用程序−

adb uninstall your.package.name

然后重新安装应用程序并验证结果。