OSDN Git Service

Merge "Move SIM select logic from SimSelectNotification to Telephony." am: 6fca0c9495
authorXiangyu/Malcolm Chen <refuhoo@google.com>
Mon, 1 Apr 2019 21:32:12 +0000 (14:32 -0700)
committerandroid-build-merger <android-build-merger@google.com>
Mon, 1 Apr 2019 21:32:12 +0000 (14:32 -0700)
am: d42dcf04db

Change-Id: I5f57320b1ad10e5207771bae0495eac656240a02

AndroidManifest.xml
src/com/android/settings/sim/SimSelectNotification.java

index 0271c92..0a0e403 100644 (file)
 
         <receiver android:name=".sim.SimSelectNotification">
             <intent-filter>
-                <action android:name="android.intent.action.SIM_STATE_CHANGED"></action>
+                <action android:name="android.intent.action.PRIMARY_SUBSCRIPTION_LIST_CHANGED"/>
             </intent-filter>
         </receiver>
 
index ebf34e5..891d171 100644 (file)
 
 package com.android.settings.sim;
 
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_ID;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_FOR_ALL_TYPES;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA;
+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_NONE;
+
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -23,19 +29,12 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
-import android.provider.Settings;
-import androidx.core.app.NotificationCompat;
-import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.util.Log;
 
-import com.android.internal.telephony.IccCardConstants;
 import com.android.settings.R;
 import com.android.settings.Settings.SimSettingsActivity;
-import com.android.settings.Utils;
 
-import java.util.List;
+import androidx.core.app.NotificationCompat;
 
 public class SimSelectNotification extends BroadcastReceiver {
     private static final String TAG = "SimSelectNotification";
@@ -46,71 +45,24 @@ public class SimSelectNotification extends BroadcastReceiver {
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        final TelephonyManager telephonyManager = (TelephonyManager)
-                context.getSystemService(Context.TELEPHONY_SERVICE);
-        final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
-        final int numSlots = telephonyManager.getSimCount();
-
-        // Do not create notifications on single SIM devices or when provisioning i.e. Setup Wizard.
-        if (numSlots < 2 || !Utils.isDeviceProvisioned(context)) {
-            return;
-        }
-
         // Cancel any previous notifications
         cancelNotification(context);
-
-        // If sim state is not ABSENT or LOADED then ignore
-        String simStatus = intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE);
-        if (!(IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(simStatus) ||
-                IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(simStatus))) {
-            Log.d(TAG, "sim state is not Absent or Loaded");
-            return;
-        } else {
-            Log.d(TAG, "simstatus = " + simStatus);
-        }
-
-        int state;
-        for (int i = 0; i < numSlots; i++) {
-            state = telephonyManager.getSimState(i);
-            if (!(state == TelephonyManager.SIM_STATE_ABSENT
-                    || state == TelephonyManager.SIM_STATE_READY
-                    || state == TelephonyManager.SIM_STATE_UNKNOWN)) {
-                Log.d(TAG, "All sims not in valid state yet");
-                return;
-            }
-        }
-
-        List<SubscriptionInfo> sil = subscriptionManager.getActiveSubscriptionInfoList();
-        if (sil == null || sil.size() < 1) {
-            Log.d(TAG, "Subscription list is empty");
-            return;
-        }
-
-        // Clear defaults for any subscriptions which no longer exist
-        subscriptionManager.clearDefaultsForInactiveSubIds();
-
-        boolean dataSelected = SubscriptionManager.isUsableSubIdValue(
-                SubscriptionManager.getDefaultDataSubscriptionId());
-        boolean smsSelected = SubscriptionManager.isUsableSubIdValue(
-                SubscriptionManager.getDefaultSmsSubscriptionId());
-
-        // If data and sms defaults are selected, dont show notification (Calls default is optional)
-        if (dataSelected && smsSelected) {
-            Log.d(TAG, "Data & SMS default sims are selected. No notification");
-            return;
-        }
-
         // Create a notification to tell the user that some defaults are missing
         createNotification(context);
 
-        if (sil.size() == 1) {
+        int dialogType = intent.getIntExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
+                EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_NONE);
+        if (dialogType == EXTRA_DEFAULT_SUBSCRIPTION_SELECT_FOR_ALL_TYPES) {
+            int subId = intent.getIntExtra(EXTRA_DEFAULT_SUBSCRIPTION_ID,
+                    SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+            int slotIndex = SubscriptionManager.getSlotIndex(subId);
             // If there is only one subscription, ask if user wants to use if for everything
             Intent newIntent = new Intent(context, SimDialogActivity.class);
             newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             newIntent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, SimDialogActivity.PREFERRED_PICK);
-            newIntent.putExtra(SimDialogActivity.PREFERRED_SIM, sil.get(0).getSimSlotIndex());
+            newIntent.putExtra(SimDialogActivity.PREFERRED_SIM, slotIndex);
             context.startActivity(newIntent);
-        } else if (!dataSelected) {
+        } else if (dialogType == EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA) {
             // If there are mulitple, ensure they pick default data
             Intent newIntent = new Intent(context, SimDialogActivity.class);
             newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);