diff options
author | Christopher Tate <ctate@google.com> | 2009-04-30 11:36:21 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2009-04-30 11:36:21 -0700 |
commit | a8bf815c6153290b173f34b071dddb0a0034a115 (patch) | |
tree | 0fa451a3a1035092ce916e3d6a25b8e8553f03bd /core/java | |
parent | 487529a70cd1479ae8d6bbfb356be7e72542c185 (diff) | |
download | frameworks_base-a8bf815c6153290b173f34b071dddb0a0034a115.zip frameworks_base-a8bf815c6153290b173f34b071dddb0a0034a115.tar.gz frameworks_base-a8bf815c6153290b173f34b071dddb0a0034a115.tar.bz2 |
Add android.backup.BackupManager
Also tweak the dataChanged() api to have the client supply a package name. We
don't necessarily TRUST this, but we use it to narrow the set of packages requesting
a backup pass, no longer blithely scheduling a pass for all packages associated
with the caller's uid.
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/backup/BackupManager.java | 67 | ||||
-rw-r--r-- | core/java/android/backup/BackupService.java | 13 | ||||
-rw-r--r-- | core/java/android/backup/IBackupManager.aidl | 7 |
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"> + * <!-- Use the class "MyBackupService" to perform backups for my app --> + * <service android:name=".MyBackupService"> + * <intent-filter> + * <action android:name="android.service.action.BACKUP"> + * </intent-filter> + * </service></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); } |