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

Commit 0f1547cb authored by Chaohui Wang's avatar Chaohui Wang Committed by Automerger Merge Worker
Browse files

Merge "Fix App Compatibility Settings' lifecycle" am: 0ba498b2 am: 7e7924bf

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2010296

Change-Id: I115858d668df4fe332b15081b1b68ed4768ad938
parents 37279f38 7e7924bf
Loading
Loading
Loading
Loading
+51 −19
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.ArraySet;


import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;
@@ -66,6 +67,8 @@ public class PlatformCompatDashboard extends DashboardFragment {


    private AndroidBuildClassifier mAndroidBuildClassifier = new AndroidBuildClassifier();
    private AndroidBuildClassifier mAndroidBuildClassifier = new AndroidBuildClassifier();


    private boolean mShouldStartAppPickerOnResume = true;

    @VisibleForTesting
    @VisibleForTesting
    String mSelectedApp;
    String mSelectedApp;


@@ -98,34 +101,49 @@ public class PlatformCompatDashboard extends DashboardFragment {
    }
    }


    @Override
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    public void onCreate(Bundle icicle) {
        super.onActivityCreated(savedInstanceState);
        super.onCreate(icicle);
        try {
        try {
            mChanges = getPlatformCompat().listUIChanges();
            mChanges = getPlatformCompat().listUIChanges();
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw new RuntimeException("Could not list changes!", e);
            throw new RuntimeException("Could not list changes!", e);
        }
        }
        startAppPicker();
        if (icicle != null) {
            mShouldStartAppPickerOnResume = false;
            mSelectedApp = icicle.getString(COMPAT_APP);
        }
        }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(COMPAT_APP, mSelectedApp);
    }
    }


    @Override
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_COMPAT_CHANGE_APP) {
        if (requestCode == REQUEST_COMPAT_CHANGE_APP) {
            if (resultCode == Activity.RESULT_OK) {
            mShouldStartAppPickerOnResume = false;
            switch (resultCode) {
                case Activity.RESULT_OK:
                    mSelectedApp = data.getAction();
                    mSelectedApp = data.getAction();
                try {
                    break;
                    final ApplicationInfo applicationInfo = getApplicationInfo();
                case Activity.RESULT_CANCELED:
                    addPreferences(applicationInfo);
                    if (TextUtils.isEmpty(mSelectedApp)) {
                } catch (PackageManager.NameNotFoundException e) {
                        finish();
                    startAppPicker();
                    }
                    }
            } else if (resultCode == AppPicker.RESULT_NO_MATCHING_APPS) {
                    break;
                case AppPicker.RESULT_NO_MATCHING_APPS:
                    mSelectedApp = null;
                    break;
            }
            return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (isFinishingOrDestroyed()) {
            return;
        }
        if (!mShouldStartAppPickerOnResume) {
            if (TextUtils.isEmpty(mSelectedApp)) {
                new AlertDialog.Builder(getContext())
                new AlertDialog.Builder(getContext())
                        .setTitle(R.string.platform_compat_dialog_title_no_apps)
                        .setTitle(R.string.platform_compat_dialog_title_no_apps)
                        .setMessage(R.string.platform_compat_dialog_text_no_apps)
                        .setMessage(R.string.platform_compat_dialog_text_no_apps)
@@ -133,10 +151,24 @@ public class PlatformCompatDashboard extends DashboardFragment {
                        .setOnDismissListener(dialog -> finish())
                        .setOnDismissListener(dialog -> finish())
                        .setCancelable(false)
                        .setCancelable(false)
                        .show();
                        .show();
                return;
            }
            }
            try {
                final ApplicationInfo applicationInfo = getApplicationInfo();
                addPreferences(applicationInfo);
                return;
                return;
            } catch (PackageManager.NameNotFoundException e) {
                mShouldStartAppPickerOnResume = true;
                mSelectedApp = null;
            }
            }
        super.onActivityResult(requestCode, resultCode, data);
        }
        startAppPicker();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(COMPAT_APP, mSelectedApp);
    }
    }


    private void addPreferences(ApplicationInfo applicationInfo) {
    private void addPreferences(ApplicationInfo applicationInfo) {