Merge "Migrate all default app shortcut preference to use roles."

This commit is contained in:
TreeHugger Robot
2019-03-01 18:34:29 +00:00
committed by Android (Google) Code Review
8 changed files with 45 additions and 326 deletions

View File

@@ -18,7 +18,6 @@ import android.app.role.RoleManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserManager;
import android.permission.PermissionControllerManager;
import android.text.TextUtils;
@@ -28,10 +27,7 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.util.CollectionUtils;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.applications.DefaultAppSettings;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
/*
* Abstract base controller for the default app shortcut preferences that launches the default app
@@ -58,22 +54,13 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
mRoleManager = context.getSystemService(RoleManager.class);
// TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
if (mRoleName != null) {
final PermissionControllerManager permissionControllerManager =
mContext.getSystemService(PermissionControllerManager.class);
permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName,
mContext.getMainExecutor(), qualified -> {
mAppQualified = qualified;
refreshAvailability();
});
}
}
// TODO: STOPSHIP(b/110557011): Remove this once we have all default apps migrated.
public DefaultAppShortcutPreferenceControllerBase(Context context, String preferenceKey,
String packageName) {
this(context, preferenceKey, null /* roleName */, packageName);
final PermissionControllerManager permissionControllerManager =
mContext.getSystemService(PermissionControllerManager.class);
permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName,
mContext.getMainExecutor(), qualified -> {
mAppQualified = qualified;
refreshAvailability();
});
}
@Override
@@ -98,7 +85,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
if (mContext.getSystemService(UserManager.class).isManagedProfile()) {
return DISABLED_FOR_USER;
}
return hasAppCapability() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
return mAppQualified ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -112,49 +99,20 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
if (!TextUtils.equals(mPreferenceKey, preference.getKey())) {
return false;
}
// TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
if (mRoleName != null) {
final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
.putExtra(Intent.EXTRA_ROLE_NAME, mRoleName);
mContext.startActivity(intent);
} else {
final Bundle bundle = new Bundle();
bundle.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mPreferenceKey);
new SubSettingLauncher(mContext)
.setDestination(DefaultAppSettings.class.getName())
.setArguments(bundle)
.setTitleRes(R.string.configure_apps)
.setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN)
.launch();
}
final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
.putExtra(Intent.EXTRA_ROLE_NAME, mRoleName);
mContext.startActivity(intent);
return true;
}
/**
* Check whether the app has the default app capability
*
* @return true if the app has the default app capability
*/
protected boolean hasAppCapability() {
// TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
if (mRoleName != null) {
return mAppQualified;
}
return false;
}
/**
* Check whether the app is the default app
*
* @return true if the app is the default app
*/
protected boolean isDefaultApp() {
// TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
if (mRoleName != null) {
final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders(
mRoleName));
return TextUtils.equals(mPackageName, packageName);
}
return false;
private boolean isDefaultApp() {
final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders(
mRoleName));
return TextUtils.equals(mPackageName, packageName);
}
}

View File

@@ -14,10 +14,8 @@
package com.android.settings.applications.appinfo;
import android.app.role.RoleManager;
import android.content.Context;
import android.os.UserHandle;
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
public class DefaultBrowserShortcutPreferenceController
extends DefaultAppShortcutPreferenceControllerBase {
@@ -25,19 +23,6 @@ public class DefaultBrowserShortcutPreferenceController
private static final String KEY = "default_browser";
public DefaultBrowserShortcutPreferenceController(Context context, String packageName) {
super(context, KEY, packageName);
super(context, KEY, RoleManager.ROLE_BROWSER, packageName);
}
@Override
protected boolean hasAppCapability() {
return DefaultBrowserPreferenceController
.hasBrowserPreference(mPackageName, mContext, UserHandle.myUserId());
}
@Override
protected boolean isDefaultApp() {
return new DefaultBrowserPreferenceController(mContext)
.isBrowserDefault(mPackageName, UserHandle.myUserId());
}
}

View File

@@ -14,27 +14,15 @@
package com.android.settings.applications.appinfo;
import android.app.role.RoleManager;
import android.content.Context;
import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
public class DefaultEmergencyShortcutPreferenceController
extends DefaultAppShortcutPreferenceControllerBase {
private static final String KEY = "default_emergency_app";
public DefaultEmergencyShortcutPreferenceController(Context context, String packageName) {
super(context, KEY, packageName);
super(context, KEY, RoleManager.ROLE_EMERGENCY, packageName);
}
@Override
protected boolean hasAppCapability() {
return DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, mContext);
}
@Override
protected boolean isDefaultApp() {
return DefaultEmergencyPreferenceController.isEmergencyDefault(mPackageName, mContext);
}
}

View File

@@ -14,28 +14,15 @@
package com.android.settings.applications.appinfo;
import android.app.role.RoleManager;
import android.content.Context;
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
public class DefaultHomeShortcutPreferenceController
extends DefaultAppShortcutPreferenceControllerBase {
private static final String KEY = "default_home";
public DefaultHomeShortcutPreferenceController(Context context, String packageName) {
super(context, KEY, packageName);
super(context, KEY, RoleManager.ROLE_HOME, packageName);
}
@Override
protected boolean hasAppCapability() {
return DefaultHomePreferenceController.hasHomePreference(mPackageName, mContext);
}
@Override
protected boolean isDefaultApp() {
return DefaultHomePreferenceController.isHomeDefault(mPackageName,
mContext.getPackageManager());
}
}