Merge "Move SIM select logic from SimSelectNotification to Telephony."

am: 6fca0c9495

Change-Id: I85ec9746b8df4a5eb53d6e0fe7e29434f12ec812
This commit is contained in:
Xiangyu/Malcolm Chen
2019-04-01 14:06:49 -07:00
committed by android-build-merger
2 changed files with 16 additions and 64 deletions

View File

@@ -2812,7 +2812,7 @@
<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>

View File

@@ -16,6 +16,12 @@
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);