Loading src/com/android/settings/AppListPreference.java +19 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; Loading Loading @@ -265,6 +266,24 @@ public class AppListPreference extends CustomListPreference { } } /** * Sets app label as summary if there is only 1 app applicable to this preference. */ protected void setSoleAppLabelAsSummary() { final CharSequence soleLauncherLabel = getSoleAppLabel(); if (!TextUtils.isEmpty(soleLauncherLabel)) { setSummary(soleLauncherLabel); } } /** * Returns app label if there is only 1 app applicable to this preference. */ protected CharSequence getSoleAppLabel() { // Intentionally left empty so subclasses can override with necessary logic. return null; } private static class SavedState implements Parcelable { public final CharSequence[] entryValues; Loading src/com/android/settings/applications/DefaultBrowserPreference.java +27 −24 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.UserHandle; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import com.android.internal.content.PackageMonitor; import com.android.settings.AppListPreference; import com.android.settings.R; Loading @@ -36,12 +37,16 @@ import java.util.List; public class DefaultBrowserPreference extends AppListPreference { private static final String TAG = "DefaultBrowserPref"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final long DELAY_UPDATE_BROWSER_MILLIS = 500; private static final Intent BROWSE_PROBE = new Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")); private final Handler mHandler = new Handler(); final private PackageManager mPm; private final PackageManager mPm; public DefaultBrowserPreference(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -65,11 +70,7 @@ public class DefaultBrowserPreference extends AppListPreference { @Override protected boolean persistString(String newValue) { if (newValue == null) { return false; } final CharSequence packageName = (CharSequence) newValue; final CharSequence packageName = newValue; if (TextUtils.isEmpty(packageName)) { return false; } Loading @@ -95,13 +96,10 @@ public class DefaultBrowserPreference extends AppListPreference { String packageName = pm.getDefaultBrowserPackageNameAsUser(mUserId); if (!TextUtils.isEmpty(packageName)) { // Check if the default Browser package is still there Intent intent = new Intent(); intent.setPackage(packageName); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); final Intent intent = new Intent(BROWSE_PROBE) .setPackage(packageName); ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, mUserId); final ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, mUserId); if (info != null) { setValue(packageName); setSummary("%s"); Loading @@ -109,23 +107,17 @@ public class DefaultBrowserPreference extends AppListPreference { setSummary(R.string.default_browser_title_none); } } else { setSummary(R.string.default_browser_title_none); Log.d(TAG, "Cannot set empty default Browser value!"); if (DEBUG) Log.d(TAG, "No default browser app."); setSoleAppLabelAsSummary(); } } private List<String> resolveBrowserApps() { List<String> result = new ArrayList<>(); // Create an Intent that will match ALL Browser Apps Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); // Resolve that intent and check that the handleAllWebDataURI boolean is set List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(intent, PackageManager.MATCH_ALL, mUserId); List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); final int count = list.size(); for (int i = 0; i < count; i++) { Loading @@ -141,6 +133,17 @@ public class DefaultBrowserPreference extends AppListPreference { return result; } @Override protected CharSequence getSoleAppLabel() { // Resolve that intent and check that the handleAllWebDataURI boolean is set List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); if (list.size() == 1) { return list.get(0).loadLabel(mPm); } return null; } private final Runnable mUpdateRunnable = new Runnable() { @Override public void run() { Loading src/com/android/settings/applications/DefaultHomePreference.java +27 −6 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.UserInfo; import android.os.Build; import android.os.UserManager; import android.util.AttributeSet; import com.android.settings.AppListPreference; import com.android.settings.R; Loading @@ -36,9 +37,11 @@ public class DefaultHomePreference extends AppListPreference { private final ArrayList<ComponentName> mAllHomeComponents = new ArrayList<>(); private final IntentFilter mHomeFilter; private final String mPackageName; public DefaultHomePreference(Context context, AttributeSet attrs) { super(context, attrs); mPackageName = getContext().getPackageName(); mHomeFilter = new IntentFilter(Intent.ACTION_MAIN); mHomeFilter.addCategory(Intent.CATEGORY_HOME); mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT); Loading @@ -59,13 +62,32 @@ public class DefaultHomePreference extends AppListPreference { IntentFilter.MATCH_CATEGORY_EMPTY, mAllHomeComponents.toArray(new ComponentName[0]), component); setSummary(getEntry()); } else { // If there is only 1 launcher, use its label as summary text. setSoleAppLabelAsSummary(); } return super.persistString(value); } @Override protected CharSequence getSoleAppLabel() { final PackageManager pm = getContext().getPackageManager(); final List<ResolveInfo> homeActivities = new ArrayList<>(); final List<CharSequence> appLabels = new ArrayList<>(); pm.getHomeActivities(homeActivities); for (ResolveInfo candidate : homeActivities) { final ActivityInfo info = candidate.activityInfo; if (info.packageName.equals(mPackageName)) { continue; } appLabels.add(info.loadLabel(pm)); } return appLabels.size() == 1 ? appLabels.get(0) : null; } public void refreshHomeOptions() { final String myPkg = getContext().getPackageName(); ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>(); ArrayList<ResolveInfo> homeActivities = new ArrayList<>(); PackageManager pm = getContext().getPackageManager(); ComponentName currentDefaultHome = pm.getHomeActivities(homeActivities); ArrayList<ComponentName> components = new ArrayList<>(); Loading @@ -73,12 +95,11 @@ public class DefaultHomePreference extends AppListPreference { List<CharSequence> summaries = new ArrayList<>(); boolean mustSupportManagedProfile = hasManagedProfile(); for (int i = 0; i < homeActivities.size(); i++) { final ResolveInfo candidate = homeActivities.get(i); for (ResolveInfo candidate : homeActivities) { final ActivityInfo info = candidate.activityInfo; ComponentName activityName = new ComponentName(info.packageName, info.name); mAllHomeComponents.add(activityName); if (info.packageName.equals(myPkg)) { if (info.packageName.equals(mPackageName)) { continue; } components.add(activityName); Loading Loading
src/com/android/settings/AppListPreference.java +19 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; Loading Loading @@ -265,6 +266,24 @@ public class AppListPreference extends CustomListPreference { } } /** * Sets app label as summary if there is only 1 app applicable to this preference. */ protected void setSoleAppLabelAsSummary() { final CharSequence soleLauncherLabel = getSoleAppLabel(); if (!TextUtils.isEmpty(soleLauncherLabel)) { setSummary(soleLauncherLabel); } } /** * Returns app label if there is only 1 app applicable to this preference. */ protected CharSequence getSoleAppLabel() { // Intentionally left empty so subclasses can override with necessary logic. return null; } private static class SavedState implements Parcelable { public final CharSequence[] entryValues; Loading
src/com/android/settings/applications/DefaultBrowserPreference.java +27 −24 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.UserHandle; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import com.android.internal.content.PackageMonitor; import com.android.settings.AppListPreference; import com.android.settings.R; Loading @@ -36,12 +37,16 @@ import java.util.List; public class DefaultBrowserPreference extends AppListPreference { private static final String TAG = "DefaultBrowserPref"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final long DELAY_UPDATE_BROWSER_MILLIS = 500; private static final Intent BROWSE_PROBE = new Intent() .setAction(Intent.ACTION_VIEW) .addCategory(Intent.CATEGORY_BROWSABLE) .setData(Uri.parse("http:")); private final Handler mHandler = new Handler(); final private PackageManager mPm; private final PackageManager mPm; public DefaultBrowserPreference(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -65,11 +70,7 @@ public class DefaultBrowserPreference extends AppListPreference { @Override protected boolean persistString(String newValue) { if (newValue == null) { return false; } final CharSequence packageName = (CharSequence) newValue; final CharSequence packageName = newValue; if (TextUtils.isEmpty(packageName)) { return false; } Loading @@ -95,13 +96,10 @@ public class DefaultBrowserPreference extends AppListPreference { String packageName = pm.getDefaultBrowserPackageNameAsUser(mUserId); if (!TextUtils.isEmpty(packageName)) { // Check if the default Browser package is still there Intent intent = new Intent(); intent.setPackage(packageName); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); final Intent intent = new Intent(BROWSE_PROBE) .setPackage(packageName); ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, mUserId); final ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, mUserId); if (info != null) { setValue(packageName); setSummary("%s"); Loading @@ -109,23 +107,17 @@ public class DefaultBrowserPreference extends AppListPreference { setSummary(R.string.default_browser_title_none); } } else { setSummary(R.string.default_browser_title_none); Log.d(TAG, "Cannot set empty default Browser value!"); if (DEBUG) Log.d(TAG, "No default browser app."); setSoleAppLabelAsSummary(); } } private List<String> resolveBrowserApps() { List<String> result = new ArrayList<>(); // Create an Intent that will match ALL Browser Apps Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); // Resolve that intent and check that the handleAllWebDataURI boolean is set List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(intent, PackageManager.MATCH_ALL, mUserId); List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); final int count = list.size(); for (int i = 0; i < count; i++) { Loading @@ -141,6 +133,17 @@ public class DefaultBrowserPreference extends AppListPreference { return result; } @Override protected CharSequence getSoleAppLabel() { // Resolve that intent and check that the handleAllWebDataURI boolean is set List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(BROWSE_PROBE, PackageManager.MATCH_ALL, mUserId); if (list.size() == 1) { return list.get(0).loadLabel(mPm); } return null; } private final Runnable mUpdateRunnable = new Runnable() { @Override public void run() { Loading
src/com/android/settings/applications/DefaultHomePreference.java +27 −6 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.UserInfo; import android.os.Build; import android.os.UserManager; import android.util.AttributeSet; import com.android.settings.AppListPreference; import com.android.settings.R; Loading @@ -36,9 +37,11 @@ public class DefaultHomePreference extends AppListPreference { private final ArrayList<ComponentName> mAllHomeComponents = new ArrayList<>(); private final IntentFilter mHomeFilter; private final String mPackageName; public DefaultHomePreference(Context context, AttributeSet attrs) { super(context, attrs); mPackageName = getContext().getPackageName(); mHomeFilter = new IntentFilter(Intent.ACTION_MAIN); mHomeFilter.addCategory(Intent.CATEGORY_HOME); mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT); Loading @@ -59,13 +62,32 @@ public class DefaultHomePreference extends AppListPreference { IntentFilter.MATCH_CATEGORY_EMPTY, mAllHomeComponents.toArray(new ComponentName[0]), component); setSummary(getEntry()); } else { // If there is only 1 launcher, use its label as summary text. setSoleAppLabelAsSummary(); } return super.persistString(value); } @Override protected CharSequence getSoleAppLabel() { final PackageManager pm = getContext().getPackageManager(); final List<ResolveInfo> homeActivities = new ArrayList<>(); final List<CharSequence> appLabels = new ArrayList<>(); pm.getHomeActivities(homeActivities); for (ResolveInfo candidate : homeActivities) { final ActivityInfo info = candidate.activityInfo; if (info.packageName.equals(mPackageName)) { continue; } appLabels.add(info.loadLabel(pm)); } return appLabels.size() == 1 ? appLabels.get(0) : null; } public void refreshHomeOptions() { final String myPkg = getContext().getPackageName(); ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>(); ArrayList<ResolveInfo> homeActivities = new ArrayList<>(); PackageManager pm = getContext().getPackageManager(); ComponentName currentDefaultHome = pm.getHomeActivities(homeActivities); ArrayList<ComponentName> components = new ArrayList<>(); Loading @@ -73,12 +95,11 @@ public class DefaultHomePreference extends AppListPreference { List<CharSequence> summaries = new ArrayList<>(); boolean mustSupportManagedProfile = hasManagedProfile(); for (int i = 0; i < homeActivities.size(); i++) { final ResolveInfo candidate = homeActivities.get(i); for (ResolveInfo candidate : homeActivities) { final ActivityInfo info = candidate.activityInfo; ComponentName activityName = new ComponentName(info.packageName, info.name); mAllHomeComponents.add(activityName); if (info.packageName.equals(myPkg)) { if (info.packageName.equals(mPackageName)) { continue; } components.add(activityName); Loading