summaryrefslogtreecommitdiffstats
path: root/core/java/android/backup
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/backup')
-rw-r--r--core/java/android/backup/BackupManager.java67
-rw-r--r--core/java/android/backup/BackupService.java13
-rw-r--r--core/java/android/backup/IBackupManager.aidl7
3 files changed, 85 insertions, 2 deletions
diff --git a/core/java/android/backup/BackupManager.java b/core/java/android/backup/BackupManager.java
new file mode 100644
index 0000000..a2d39f5
--- /dev/null
+++ b/core/java/android/backup/BackupManager.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.backup;
+
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+
+/**
+ * BackupManager is the interface to the system's backup service.
+ * Applications simply instantiate one, and then use that instance
+ * to communicate with the backup infrastructure.
+ *
+ * <p>When your application has made changes to data it wishes to have
+ * backed up, call {@link #dataChanged()} to notify the backup service.
+ * The system will then schedule a backup operation to occur in the near
+ * future. Repeated calls to {@link #dataChanged()} have no further effect
+ * until the backup operation actually occurs.
+ *
+ * <p>The backup operation itself begins with the system launching the
+ * {@link BackupService} subclass declared in your manifest. See the documentation
+ * for {@link BackupService} for a detailed description of how the backup then proceeds.
+ */
+public class BackupManager {
+ private Context mContext;
+ private IBackupManager mService;
+
+ /**
+ * Constructs a BackupManager object through which the application can
+ * communicate with the Android backup system.
+ *
+ * @param context The {@link android.content.Context} that was provided when
+ * one of your application's {@link android.app.Activity Activities}
+ * was created.
+ */
+ public BackupManager (Context context) {
+ mContext = context;
+ mService = IBackupManager.Stub.asInterface(
+ ServiceManager.getService(Context.BACKUP_SERVICE));
+ }
+
+ /**
+ * Notifies the Android backup system that your application wishes to back up
+ * new changes to its data. A backup operation using your application's
+ * {@link BackupService} subclass will be scheduled when you call this method.
+ */
+ public void dataChanged() {
+ try {
+ mService.dataChanged(mContext.getPackageName());
+ } catch (RemoteException e) {
+ }
+ }
+}
diff --git a/core/java/android/backup/BackupService.java b/core/java/android/backup/BackupService.java
index 5cfa4f2..0fee72c 100644
--- a/core/java/android/backup/BackupService.java
+++ b/core/java/android/backup/BackupService.java
@@ -29,6 +29,19 @@ import android.util.Log;
* This is the central interface between an application and Android's
* settings backup mechanism.
*
+ * In order to use the backup service, your application must implement a
+ * subclass of BackupService, and declare an intent filter
+ * in the application manifest specifying that your BackupService subclass
+ * handles the {link #SERVICE_ACTION} intent action. For example:
+ *
+ * <pre class="prettyprint">
+ * &lt;!-- Use the class "MyBackupService" to perform backups for my app --&gt;
+ * &lt;service android:name=".MyBackupService"&gt;
+ * &lt;intent-filter&gt;
+ * &lt;action android:name="android.service.action.BACKUP"&gt;
+ * &lt;/intent-filter&gt;
+ * &lt;/service&gt;</pre>
+ *
* <p><em>Not hidden but API subject to change and should not be published</em>
*/
diff --git a/core/java/android/backup/IBackupManager.aidl b/core/java/android/backup/IBackupManager.aidl
index 40cebdd..7efaf58 100644
--- a/core/java/android/backup/IBackupManager.aidl
+++ b/core/java/android/backup/IBackupManager.aidl
@@ -21,12 +21,15 @@ package android.backup;
* operation currently needed is a simple notification that the app has made changes to
* data it wishes to back up, so the system should run a backup pass.
*
- * {@hide pending API solidification}
+ * Apps will use the {@link android.backup.BackupManager} class rather than going through
+ * this Binder interface directly.
+ *
+ * {@hide}
*/
interface IBackupManager {
/**
* Tell the system service that the caller has made changes to its
* data, and therefore needs to undergo a backup pass.
*/
- oneway void dataChanged();
+ oneway void dataChanged(String packageName);
}