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

Commit faf9baf9 authored by SongFerngWang's avatar SongFerngWang
Browse files

stop show preferred SIM card dialog during sim switch

Bug: 227169390
Test: manually test
Change-Id: I242402e49b267c8cd61a85a46367c778d2d8bbf8
Merged-In: I242402e49b267c8cd61a85a46367c778d2d8bbf8
parent fe38e396
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -16,8 +16,12 @@

package com.android.settings.network.telephony;

import static android.content.Context.MODE_PRIVATE;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.telephony.SubscriptionManager;
import android.util.Log;

import androidx.fragment.app.FragmentActivity;

@@ -27,14 +31,27 @@ public class SubscriptionActionDialogActivity extends FragmentActivity {
    private static final String TAG = "SubscriptionActionDialogActivity";
    // Arguments
    protected static final String ARG_SUB_ID = "sub_id";

    protected SubscriptionManager mSubscriptionManager;

    public static final String SIM_ACTION_DIALOG_PREFS = "sim_action_dialog_prefs";
    // Shared preference keys
    public static final String KEY_PROGRESS_STATE = "progress_state";
    public static final int PROGRESS_IS_NOT_SHOWING = 0;
    public static final int PROGRESS_IS_SHOWING = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mSubscriptionManager = getSystemService(SubscriptionManager.class);
        setProgressState(PROGRESS_IS_NOT_SHOWING);
    }


    @Override
    public void finish() {
        setProgressState(PROGRESS_IS_NOT_SHOWING);
        super.finish();
    }

    /**
@@ -44,11 +61,13 @@ public class SubscriptionActionDialogActivity extends FragmentActivity {
     */
    protected void showProgressDialog(String message) {
        ProgressDialogFragment.show(getFragmentManager(), message, null);
        setProgressState(PROGRESS_IS_SHOWING);
    }

    /** Dismisses the loading dialog. */
    protected void dismissProgressDialog() {
        ProgressDialogFragment.dismiss(getFragmentManager());
        setProgressState(PROGRESS_IS_NOT_SHOWING);
    }

    /**
@@ -60,4 +79,10 @@ public class SubscriptionActionDialogActivity extends FragmentActivity {
    protected void showErrorDialog(String title, String message) {
        AlertDialogFragment.show(this, title, message);
    }

    protected void setProgressState(int state) {
        final SharedPreferences prefs = getSharedPreferences(SIM_ACTION_DIALOG_PREFS, MODE_PRIVATE);
        prefs.edit().putInt(KEY_PROGRESS_STATE, state).apply();
        Log.i(TAG, "setProgressState:" + state);
    }
}
+19 −0
Original line number Diff line number Diff line
@@ -16,8 +16,11 @@

package com.android.settings.sim;

import static android.content.Context.MODE_PRIVATE;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -32,6 +35,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;

import com.android.settings.R;
import com.android.settings.network.telephony.SubscriptionActionDialogActivity;

import java.util.List;

@@ -60,6 +64,7 @@ public class SimDialogActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addSystemFlags(
                WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
        showOrUpdateDialog();
@@ -72,6 +77,13 @@ public class SimDialogActivity extends FragmentActivity {
        showOrUpdateDialog();
    }

    private int getProgressState() {
        final SharedPreferences prefs = getSharedPreferences(
                SubscriptionActionDialogActivity.SIM_ACTION_DIALOG_PREFS, MODE_PRIVATE);
        return prefs.getInt(SubscriptionActionDialogActivity.KEY_PROGRESS_STATE,
                SubscriptionActionDialogActivity.PROGRESS_IS_NOT_SHOWING);
    }

    private void showOrUpdateDialog() {
        final int dialogType = getIntent().getIntExtra(DIALOG_TYPE_KEY, INVALID_PICK);

@@ -80,6 +92,13 @@ public class SimDialogActivity extends FragmentActivity {
            return;
        }

        if (dialogType == PREFERRED_PICK
                && getProgressState() == SubscriptionActionDialogActivity.PROGRESS_IS_SHOWING) {
            Log.d(TAG, "Finish the sim dialog since the sim action dialog is showing the progress");
            finish();
            return;
        }

        final String tag = Integer.toString(dialogType);
        final FragmentManager fragmentManager = getSupportFragmentManager();
        SimDialogFragment fragment = (SimDialogFragment) fragmentManager.findFragmentByTag(tag);