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或者它可能是文件。 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 Data Backup Tutorial

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

Android Data Backup Tutorial

复制的键之后,需要写入到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

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


上一篇: Android自定义字体 下一篇: Android Gestures/手势