Loading src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +91 −18 Original line number Diff line number Diff line Loading @@ -95,6 +95,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private static final String ALTERNATE_INTENT = "android.settings.SYNC_SETTINGS"; private static final String PRIMARY_INTENT = "android.settings.CREDENTIAL_PROVIDER"; private static final int MAX_SELECTABLE_PROVIDERS = 5; private static final String SETTINGS_ACTIVITY_INTENT_ACTION = "android.intent.action.MAIN"; private static final String SETTINGS_ACTIVITY_INTENT_CATEGORY = "android.intent.category.LAUNCHER"; private final PackageManager mPm; private final List<CredentialProviderInfo> mServices; Loading Loading @@ -481,13 +484,22 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl continue; } // Get the settings activity. CharSequence settingsActivity = combinedInfo.getCredentialProviderInfos().get(0).getSettingsActivity(); Drawable icon = combinedInfo.getAppIcon(context, getUser()); CharSequence title = combinedInfo.getAppName(context); // Build the pref and add it to the output & group. CombiPreference pref = addProviderPreference( context, title, icon, packageName, combinedInfo.getSettingsSubtitle()); context, title == null ? "" : title, icon, packageName, combinedInfo.getSettingsSubtitle(), settingsActivity); output.put(packageName, pref); group.addPreference(pref); } Loading @@ -507,7 +519,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl label == null ? "" : label, service.getServiceIcon(mContext), service.getServiceInfo().packageName, service.getSettingsSubtitle()); service.getSettingsSubtitle(), service.getSettingsActivity()); } /** Loading Loading @@ -566,7 +579,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl @NonNull CharSequence title, @Nullable Drawable icon, @NonNull String packageName, @Nullable CharSequence subtitle) { @Nullable CharSequence subtitle, @Nullable CharSequence settingsActivity) { final CombiPreference pref = new CombiPreference(prefContext, mEnabledPackageNames.contains(packageName)); pref.setTitle(title); Loading @@ -582,7 +596,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } pref.setPreferenceListener( (p, isChecked) -> { new CombiPreference.OnCombiPreferenceClickListener() { @Override public void onCheckChanged(CombiPreference p, boolean isChecked) { if (isChecked) { if (mEnabledPackageNames.size() >= MAX_SELECTABLE_PROVIDERS) { // Show the error if too many enabled. Loading @@ -606,6 +622,48 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } else { togglePackageNameDisabled(packageName); } } @Override public void onLeftSideClicked() { if (settingsActivity == null) { Log.w(TAG, "settingsActivity was null"); return; } String settingsActivityStr = String.valueOf(settingsActivity); ComponentName cn = ComponentName.unflattenFromString(settingsActivityStr); if (cn == null) { Log.w( TAG, "Failed to deserialize settingsActivity attribute, we got: " + settingsActivityStr); return; } Intent intent = new Intent(SETTINGS_ACTIVITY_INTENT_ACTION); intent.addCategory(SETTINGS_ACTIVITY_INTENT_CATEGORY); intent.setComponent(cn); Context context = mContext; int currentUserId = getUser(); int contextUserId = context.getUser().getIdentifier(); if (currentUserId != contextUserId) { Log.d( TAG, "onLeftSideClicked(): using context for current user (" + currentUserId + ") instead of user " + contextUserId + " on headless system user mode"); context = context.createContextAsUser( UserHandle.of(currentUserId), /* flags= */ 0); } context.startActivity(intent); } }); return pref; Loading Loading @@ -920,6 +978,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl public interface OnCombiPreferenceClickListener { /** Called when the check is updated */ void onCheckChanged(CombiPreference p, boolean isChecked); /** Called when the left side is clicked. */ void onLeftSideClicked(); } public CombiPreference(Context context, boolean initialValue) { Loading Loading @@ -968,6 +1029,18 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // Store this for later. mSwitch = switchView; } super.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { if (mOnClickListener != null) { mOnClickListener.onLeftSideClicked(); } return true; } }); } } } Loading
src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +91 −18 Original line number Diff line number Diff line Loading @@ -95,6 +95,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private static final String ALTERNATE_INTENT = "android.settings.SYNC_SETTINGS"; private static final String PRIMARY_INTENT = "android.settings.CREDENTIAL_PROVIDER"; private static final int MAX_SELECTABLE_PROVIDERS = 5; private static final String SETTINGS_ACTIVITY_INTENT_ACTION = "android.intent.action.MAIN"; private static final String SETTINGS_ACTIVITY_INTENT_CATEGORY = "android.intent.category.LAUNCHER"; private final PackageManager mPm; private final List<CredentialProviderInfo> mServices; Loading Loading @@ -481,13 +484,22 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl continue; } // Get the settings activity. CharSequence settingsActivity = combinedInfo.getCredentialProviderInfos().get(0).getSettingsActivity(); Drawable icon = combinedInfo.getAppIcon(context, getUser()); CharSequence title = combinedInfo.getAppName(context); // Build the pref and add it to the output & group. CombiPreference pref = addProviderPreference( context, title, icon, packageName, combinedInfo.getSettingsSubtitle()); context, title == null ? "" : title, icon, packageName, combinedInfo.getSettingsSubtitle(), settingsActivity); output.put(packageName, pref); group.addPreference(pref); } Loading @@ -507,7 +519,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl label == null ? "" : label, service.getServiceIcon(mContext), service.getServiceInfo().packageName, service.getSettingsSubtitle()); service.getSettingsSubtitle(), service.getSettingsActivity()); } /** Loading Loading @@ -566,7 +579,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl @NonNull CharSequence title, @Nullable Drawable icon, @NonNull String packageName, @Nullable CharSequence subtitle) { @Nullable CharSequence subtitle, @Nullable CharSequence settingsActivity) { final CombiPreference pref = new CombiPreference(prefContext, mEnabledPackageNames.contains(packageName)); pref.setTitle(title); Loading @@ -582,7 +596,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } pref.setPreferenceListener( (p, isChecked) -> { new CombiPreference.OnCombiPreferenceClickListener() { @Override public void onCheckChanged(CombiPreference p, boolean isChecked) { if (isChecked) { if (mEnabledPackageNames.size() >= MAX_SELECTABLE_PROVIDERS) { // Show the error if too many enabled. Loading @@ -606,6 +622,48 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } else { togglePackageNameDisabled(packageName); } } @Override public void onLeftSideClicked() { if (settingsActivity == null) { Log.w(TAG, "settingsActivity was null"); return; } String settingsActivityStr = String.valueOf(settingsActivity); ComponentName cn = ComponentName.unflattenFromString(settingsActivityStr); if (cn == null) { Log.w( TAG, "Failed to deserialize settingsActivity attribute, we got: " + settingsActivityStr); return; } Intent intent = new Intent(SETTINGS_ACTIVITY_INTENT_ACTION); intent.addCategory(SETTINGS_ACTIVITY_INTENT_CATEGORY); intent.setComponent(cn); Context context = mContext; int currentUserId = getUser(); int contextUserId = context.getUser().getIdentifier(); if (currentUserId != contextUserId) { Log.d( TAG, "onLeftSideClicked(): using context for current user (" + currentUserId + ") instead of user " + contextUserId + " on headless system user mode"); context = context.createContextAsUser( UserHandle.of(currentUserId), /* flags= */ 0); } context.startActivity(intent); } }); return pref; Loading Loading @@ -920,6 +978,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl public interface OnCombiPreferenceClickListener { /** Called when the check is updated */ void onCheckChanged(CombiPreference p, boolean isChecked); /** Called when the left side is clicked. */ void onLeftSideClicked(); } public CombiPreference(Context context, boolean initialValue) { Loading Loading @@ -968,6 +1029,18 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // Store this for later. mSwitch = switchView; } super.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { if (mOnClickListener != null) { mOnClickListener.onLeftSideClicked(); } return true; } }); } } }