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

Commit de3260b5 authored by Jason Monk's avatar Jason Monk
Browse files

Keyguard: Use plmn/spn broadcast when no SIMs

The keyguard needs to show either 'emergency calls only' or 'no service'
depending on whether there is service available, so try to pull this from
the old sticky broadcast containing plmn/spn.

Bug: 19476978
Change-Id: I83523cc4c7dd5f46bd97df2cc9ecdb38d1c2e001
parent aba93780
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import java.util.List;
import java.util.Locale;

import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.TypedArray;
import android.net.ConnectivityManager;
import android.telephony.SubscriptionInfo;
@@ -33,6 +35,7 @@ import android.widget.TextView;

import com.android.internal.telephony.IccCardConstants;
import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.widget.LockPatternUtils;

public class CarrierText extends TextView {
@@ -120,10 +123,27 @@ public class CarrierText extends TextView {
                        subs.get(0).getCarrierName());
            } else {
                // We don't have a SubscriptionInfo to get the emergency calls only from.
                // Lets just make it ourselves.
                // Grab it from the old sticky broadcast if possible instead. We can use it
                // here because no subscriptions are active, so we don't have
                // to worry about MSIM clashing.
                CharSequence text =
                        getContext().getText(com.android.internal.R.string.emergency_calls_only);
                Intent i = getContext().registerReceiver(null,
                        new IntentFilter(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION));
                if (i != null) {
                    String spn = "";
                    String plmn = "";
                    if (i.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_SPN, false)) {
                        spn = i.getStringExtra(TelephonyIntents.EXTRA_SPN);
                    }
                    if (i.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_PLMN, false)) {
                        plmn = i.getStringExtra(TelephonyIntents.EXTRA_PLMN);
                    }
                    if (DEBUG) Log.d(TAG, "Getting plmn/spn sticky brdcst " + plmn + "/" + spn);
                    text = concatenate(plmn, spn);
                }
                displayText =  makeCarrierStringOnEmergencyCapable(
                        getContext().getText(R.string.keyguard_missing_sim_message_short),
                        getContext().getText(com.android.internal.R.string.emergency_calls_only));
                        getContext().getText(R.string.keyguard_missing_sim_message_short), text);
            }
        }
        setText(displayText);