下面列出了android.app.backup.BackupManager#dataChanged ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static boolean saveDatabase(Context context, ArrayList<Entry> entries, SecretKey encryptionKey) {
if (encryptionKey == null) {
Toast.makeText(context, R.string.toast_encryption_key_empty, Toast.LENGTH_LONG).show();
return false;
}
String jsonString = entriesToString(entries);
try {
synchronized (DatabaseHelper.DatabaseFileLock) {
byte[] data = EncryptionHelper.encrypt(encryptionKey, jsonString.getBytes());
FileHelper.writeBytesToFile(new File(context.getFilesDir() + "/" + Constants.FILENAME_DATABASE), data);
}
} catch (Exception error) {
error.printStackTrace();
return false;
}
BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged();
return true;
}
public static String getUserID(Context context) {
if (uniqueID == null) {
SharedPreferences sharedPrefs = context.getSharedPreferences(SimpleBackupAgent.PREFS, Context.MODE_PRIVATE);
uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);
if (uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
//backup the changes
BackupManager mBackupManager = new BackupManager(context);
mBackupManager.dataChanged();
}
}
return uniqueID;
}
private void setStringUnchecked(String key, int userId, String value) {
Preconditions.checkArgument(userId != USER_FRP, "cannot store lock settings for FRP user");
mStorage.writeKeyValue(key, value, userId);
if (ArrayUtils.contains(SETTINGS_TO_BACKUP, key)) {
BackupManager.dataChanged("com.android.providers.settings");
}
}
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
BackupManager backupManager = new BackupManager(this);
backupManager.dataChanged();
if (key.equals(getString(R.string.settings_key_theme)) ||
key.equals(getString(R.string.settings_key_locale)) ||
key.equals(getString(R.string.settings_key_special_features)) ||
key.equals(getString(R.string.settings_key_backup_location))) {
recreate();
} else if(key.equals(getString(R.string.settings_key_encryption))) {
if (settings.getEncryption() != EncryptionType.PASSWORD) {
if (settings.getAndroidBackupServiceEnabled()) {
UIHelper.showGenericDialog(this,
R.string.settings_dialog_title_android_sync,
R.string.settings_dialog_msg_android_sync_disabled_encryption
);
}
settings.setAndroidBackupServiceEnabled(false);
if (fragment.useAndroidSync != null) {
fragment.useAndroidSync.setEnabled(false);
fragment.useAndroidSync.setChecked(false);
}
} else {
if (fragment.useAndroidSync != null)
fragment.useAndroidSync.setEnabled(true);
}
}
fragment.updateAutoBackup();
}
/** Schedule backups each time the preferences are modified. */
public static SharedPreferences.OnSharedPreferenceChangeListener
registerOnSharedPreferencesChangeListener(Context applicationContext) {
SharedPreferences.OnSharedPreferenceChangeListener listener =
(sharedPreferences, s) ->
BackupManager.dataChanged("com.google.android.apps.forscience.whistlepunk");
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.registerOnSharedPreferenceChangeListener(listener);
return listener;
}
private ChromeBackupWatcher() {
Context context = ContextUtils.getApplicationContext();
if (context == null) return;
mBackupManager = new BackupManager(context);
// Watch the Java preferences that are backed up.
SharedPreferences sharedPrefs = ContextUtils.getAppSharedPreferences();
// If we have never done a backup do one immediately.
if (!sharedPrefs.getBoolean(FIRST_BACKUP_DONE, false)) {
mBackupManager.dataChanged();
sharedPrefs.edit().putBoolean(FIRST_BACKUP_DONE, true).apply();
}
sharedPrefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
// Update the backup if the user id or any of the backed up Android
// preferences change.
if (key.equals(ChromeSigninController.SIGNED_IN_ACCOUNT_KEY)) {
onBackupPrefsChanged();
return;
}
for (String pref : ChromeBackupAgent.BACKUP_ANDROID_BOOL_PREFS) {
if (key.equals(pref)) {
onBackupPrefsChanged();
return;
}
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
identityProvider = DeviceIdentityProvider.getInstance(this);
// force backup for new device immediately
if (identityProvider.isNewDevice()) {
BackupManager backupManager = new BackupManager(this);
backupManager.dataChanged();
}
initView();
}
@Override
protected void onStop() {
// allow backup authorized devices only
if (identityProvider.isAuthorizedDevice()) {
BackupManager backupManager = new BackupManager(this);
backupManager.dataChanged();
}
super.onStop();
}
private ChromeBackupWatcher() {
Context context = ContextUtils.getApplicationContext();
if (context == null) return;
mBackupManager = new BackupManager(context);
// Watch the Java preferences that are backed up.
SharedPreferences sharedPrefs = ContextUtils.getAppSharedPreferences();
// If we have never done a backup do one immediately.
if (!sharedPrefs.getBoolean(FIRST_BACKUP_DONE, false)) {
mBackupManager.dataChanged();
sharedPrefs.edit().putBoolean(FIRST_BACKUP_DONE, true).apply();
}
sharedPrefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
// Update the backup if the user id or any of the backed up Android
// preferences change.
if (key.equals(ChromeSigninController.SIGNED_IN_ACCOUNT_KEY)) {
onBackupPrefsChanged();
return;
}
for (String pref : ChromeBackupAgent.BACKUP_ANDROID_BOOL_PREFS) {
if (key.equals(pref)) {
onBackupPrefsChanged();
return;
}
}
}
});
}
@Override
public void dataChanged() {
BackupManager bmgr = new BackupManager(context);
bmgr.dataChanged();
}
private void scheduleBackup() {
BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged();
}
public static void requestBackup(Context context) {
Log.d(MyUtil.PACKAGE_NAME, "requestBackup");
BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged();
}
/**
* Let the BackupManager know that account sync settings have changed. This will trigger
* {@link com.android.server.backup.SystemBackupAgent} to run.
*/
public void queueBackup() {
BackupManager.dataChanged("android");
}