diff options
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/app/backup/BackupManager.java | 24 | ||||
| -rw-r--r-- | services/backup/java/com/android/server/backup/Trampoline.java | 4 |
3 files changed, 28 insertions, 1 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 762b6e89f2d0..ca5f66e90d29 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -430,6 +430,7 @@ package android.app.backup { method public java.lang.String getCurrentTransport(); method public boolean isAppEligibleForBackup(java.lang.String); method public boolean isBackupEnabled(); + method public boolean isBackupServiceActive(android.os.UserHandle); method public java.lang.String[] listAllTransports(); method public int requestBackup(java.lang.String[], android.app.backup.BackupObserver); method public int requestBackup(java.lang.String[], android.app.backup.BackupObserver, android.app.backup.BackupManagerMonitor, int); diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java index 3a6a5b20edf7..12f4483141f4 100644 --- a/core/java/android/app/backup/BackupManager.java +++ b/core/java/android/app/backup/BackupManager.java @@ -27,6 +27,7 @@ import android.os.Handler; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.UserHandle; import android.util.Log; import android.util.Pair; @@ -387,6 +388,29 @@ public class BackupManager { } /** + * Report whether the backup mechanism is currently active. + * When it is inactive, the device will not perform any backup operations, nor will it + * deliver data for restore, although clients can still safely call BackupManager methods. + * + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.BACKUP) + public boolean isBackupServiceActive(UserHandle user) { + mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, + "isBackupServiceActive"); + checkServiceBinder(); + if (sService != null) { + try { + return sService.isBackupServiceActive(user.getIdentifier()); + } catch (RemoteException e) { + Log.e(TAG, "isBackupEnabled() couldn't connect"); + } + } + return false; + } + + /** * Enable/disable data restore at application install time. When enabled, app * installation will include an attempt to fetch the app's historical data from * the archival restore dataset (if any). When disabled, no such attempt will diff --git a/services/backup/java/com/android/server/backup/Trampoline.java b/services/backup/java/com/android/server/backup/Trampoline.java index a628c9dbb1a9..540f5a15e6f7 100644 --- a/services/backup/java/com/android/server/backup/Trampoline.java +++ b/services/backup/java/com/android/server/backup/Trampoline.java @@ -177,12 +177,15 @@ public class Trampoline extends IBackupManager.Stub { } } + // IBackupManager binder API + /** * Querying activity state of backup service. Calling this method before initialize yields * undefined result. * @param userHandle The user in which the activity state of backup service is queried. * @return true if the service is active. */ + @Override public boolean isBackupServiceActive(final int userHandle) { // TODO: http://b/22388012 if (userHandle == UserHandle.USER_SYSTEM) { @@ -193,7 +196,6 @@ public class Trampoline extends IBackupManager.Stub { return false; } - // IBackupManager binder API @Override public void dataChanged(String packageName) throws RemoteException { BackupManagerServiceInterface svc = mService; |