summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2014-07-28 15:02:04 -0700
committerChristopher Tate <ctate@android.com>2014-07-28 23:13:06 +0000
commitc17739d112d8e7076924c7fdd98614abafd58609 (patch)
tree0c10a66c857854501da3a5c39258110896f92273
parentcfcdf1270127d9a333cda2b91646713d1f41c6ac (diff)
downloadframeworks_base-c17739d112d8e7076924c7fdd98614abafd58609.zip
frameworks_base-c17739d112d8e7076924c7fdd98614abafd58609.tar.gz
frameworks_base-c17739d112d8e7076924c7fdd98614abafd58609.tar.bz2
Provide outside-facing API for data management intent+label
Bug 16346320 Change-Id: I3f4c2f4b700c77880ba3d8db7c92cdb404763d0d
-rw-r--r--core/java/android/app/backup/IBackupManager.aidl12
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java44
2 files changed, 56 insertions, 0 deletions
diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl
index 72bc4f0..8a44c8e 100644
--- a/core/java/android/app/backup/IBackupManager.aidl
+++ b/core/java/android/app/backup/IBackupManager.aidl
@@ -250,6 +250,18 @@ interface IBackupManager {
String getDestinationString(String transport);
/**
+ * Get the manage-data UI intent, if any, from the given transport. Callers must
+ * hold the android.permission.BACKUP permission in order to use this method.
+ */
+ Intent getDataManagementIntent(String transport);
+
+ /**
+ * Get the manage-data menu label, if any, from the given transport. Callers must
+ * hold the android.permission.BACKUP permission in order to use this method.
+ */
+ String getDataManagementLabel(String transport);
+
+ /**
* Begin a restore session. Either or both of packageName and transportID
* may be null. If packageName is non-null, then only the given package will be
* considered for restore. If transportID is null, then the restore will use
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 291d366..9659b79 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -8441,6 +8441,50 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
return null;
}
+ // Supply the manage-data intent for the given transport.
+ public Intent getDataManagementIntent(String transportName) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
+ "getDataManagementIntent");
+
+ synchronized (mTransports) {
+ final IBackupTransport transport = mTransports.get(transportName);
+ if (transport != null) {
+ try {
+ final Intent intent = transport.dataManagementIntent();
+ if (MORE_DEBUG) Slog.d(TAG, "getDataManagementIntent() returning intent "
+ + intent);
+ return intent;
+ } catch (RemoteException e) {
+ /* fall through to return null */
+ }
+ }
+ }
+
+ return null;
+ }
+
+ // Supply the menu label for affordances that fire the manage-data intent
+ // for the given transport.
+ public String getDataManagementLabel(String transportName) {
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
+ "getDataManagementLabel");
+
+ synchronized (mTransports) {
+ final IBackupTransport transport = mTransports.get(transportName);
+ if (transport != null) {
+ try {
+ final String text = transport.dataManagementLabel();
+ if (MORE_DEBUG) Slog.d(TAG, "getDataManagementLabel() returning " + text);
+ return text;
+ } catch (RemoteException e) {
+ /* fall through to return null */
+ }
+ }
+ }
+
+ return null;
+ }
+
// Callback: a requested backup agent has been instantiated. This should only
// be called from the Activity Manager.
public void agentConnected(String packageName, IBinder agentBinder) {