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.yiibai.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.yiibai.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

然後重新安裝應用程式和驗證結果