diff options
author | Christopher Tate <ctate@google.com> | 2014-07-28 15:02:04 -0700 |
---|---|---|
committer | Christopher Tate <ctate@android.com> | 2014-07-28 23:13:06 +0000 |
commit | c17739d112d8e7076924c7fdd98614abafd58609 (patch) | |
tree | 0c10a66c857854501da3a5c39258110896f92273 | |
parent | cfcdf1270127d9a333cda2b91646713d1f41c6ac (diff) | |
download | frameworks_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.aidl | 12 | ||||
-rw-r--r-- | services/backup/java/com/android/server/backup/BackupManagerService.java | 44 |
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) { |