Get intent for backup settings from backup transport.

This changes BackupSettingsActivity to launch backup settings
from intent provided by BackupTransport#dataManagementIntent() API
instead of the config.xml.

Test: make RunSettingsRoboTests -j40
Change-Id: I0847999459a914e585a626761f3051f1d7a0b591
This commit is contained in:
Anton Philippov
2017-01-19 18:17:44 +00:00
parent 7ce10b653b
commit 970a66c972
4 changed files with 325 additions and 46 deletions

View File

@@ -33,6 +33,8 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.nfc.NfcAdapter;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
@@ -969,29 +971,27 @@ public class SettingsActivity extends SettingsDrawerActivity
}
}
String backupIntent = getResources().getString(R.string.config_backup_settings_intent);
boolean useDefaultBackup = TextUtils.isEmpty(backupIntent);
// Check if the backup transport has provided an intent to launch the backup settings.
BackupSettingsHelper backupHelper = new BackupSettingsHelper();
boolean useDefaultBackup = !backupHelper.isIntentProvidedByTransport(getPackageManager());
if (Log.isLoggable(LOG_TAG, Log.VERBOSE)) {
Log.v(LOG_TAG, "Enabling default backup settings page: " + useDefaultBackup);
}
setTileEnabled(new ComponentName(packageName,
Settings.PrivacySettingsActivity.class.getName()), useDefaultBackup, isAdmin);
setTileEnabled(new ComponentName(packageName,
"com.android.settings.PrivacyDashboardAlias"),
useDefaultBackup, isAdmin);
boolean hasBackupActivity = false;
if (!useDefaultBackup) {
try {
Intent intent = Intent.parseUri(backupIntent, 0);
hasBackupActivity = !getPackageManager().queryIntentActivities(intent, 0).isEmpty();
} catch (URISyntaxException e) {
Log.e(LOG_TAG, "Invalid backup intent URI!", e);
}
}
// Enable/disable BackupSettingsActivity and its alias.
if (Log.isLoggable(LOG_TAG, Log.VERBOSE)) {
Log.v(LOG_TAG, "Enabling transport provided backup settings: " + !useDefaultBackup);
}
setTileEnabled(new ComponentName(packageName,
BackupSettingsActivity.class.getName()), hasBackupActivity, isAdmin);
BackupSettingsActivity.class.getName()), !useDefaultBackup, isAdmin);
setTileEnabled(new ComponentName(packageName,
"com.android.settings.BackupResetDashboardAlias"), hasBackupActivity, isAdmin);
"com.android.settings.BackupResetDashboardAlias"), !useDefaultBackup, isAdmin);
setTileEnabled(new ComponentName(packageName,
Settings.EnterprisePrivacySettingsActivity.class.getName()),