Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0fd709bf authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use app name as summary in default home app setting." into nyc-mr1-dev

parents f7e45339 233daf46
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
+27 −24
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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;
        }
@@ -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");
@@ -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++) {
@@ -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() {
+27 −6
Original line number Diff line number Diff line
@@ -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;

@@ -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);
@@ -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<>();
@@ -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);