• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

packages/apps/Settings


Commit MetaInfo

Revisionabd767ab1d7038a121b542027f0f34b519e38992 (tree)
Zeit2020-12-16 07:11:55
AutorMalcolm Chen <refuhoo@goog...>
CommiterXiangyu/Malcolm Chen

Log Message

Automatically dismiss SIM combination warnings and selection dialogs.

When configuring CBRS profiles this dialog / notification will be
dismissed after configuration is done, to avoid confusion.

Bug: 142092510
Test: manual and unittest
Change-Id: Iaf30062f555ec2c119c4aafd6aa013e73b5253f0
Merged-In: Iaf30062f555ec2c119c4aafd6aa013e73b5253f0

Ändern Zusammenfassung

Diff

--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -19,7 +19,6 @@ package com.android.settings.sim;
1919 import android.app.Activity;
2020 import android.content.Intent;
2121 import android.os.Bundle;
22-import android.telecom.PhoneAccount;
2322 import android.telecom.PhoneAccountHandle;
2423 import android.telecom.TelecomManager;
2524 import android.telephony.SubscriptionManager;
@@ -54,6 +53,8 @@ public class SimDialogActivity extends FragmentActivity {
5453 public static final int PREFERRED_PICK = 3;
5554 // Show the "select SMS subscription" dialog, but don't save as default, just return a result
5655 public static final int SMS_PICK_FOR_MESSAGE = 4;
56+ // Dismiss the current dialog and finish the activity.
57+ public static final int PICK_DISMISS = 5;
5758
5859 @Override
5960 protected void onCreate(Bundle savedInstanceState) {
@@ -70,6 +71,12 @@ public class SimDialogActivity extends FragmentActivity {
7071
7172 private void showOrUpdateDialog() {
7273 final int dialogType = getIntent().getIntExtra(DIALOG_TYPE_KEY, INVALID_PICK);
74+
75+ if (dialogType == PICK_DISMISS) {
76+ finishAndRemoveTask();
77+ return;
78+ }
79+
7380 final String tag = Integer.toString(dialogType);
7481 final FragmentManager fragmentManager = getSupportFragmentManager();
7582 SimDialogFragment fragment = (SimDialogFragment) fragmentManager.findFragmentByTag(tag);
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -20,10 +20,10 @@ import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_INCOMING_
2020 import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_OUTGOING_MMS;
2121 import static android.provider.Settings.EXTRA_ENABLE_MMS_DATA_REQUEST_REASON;
2222 import static android.provider.Settings.EXTRA_SUB_ID;
23-import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
2423 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
2524 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_ALL;
2625 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA;
26+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS;
2727 import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_NONE;
2828 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_NAMES;
2929 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE;
@@ -32,6 +32,9 @@ import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_T
3232 import static android.telephony.TelephonyManager.EXTRA_SUBSCRIPTION_ID;
3333 import static android.telephony.data.ApnSetting.TYPE_MMS;
3434
35+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
36+import static com.android.settings.sim.SimDialogActivity.PICK_DISMISS;
37+
3538 import android.app.Notification;
3639 import android.app.NotificationChannel;
3740 import android.app.NotificationManager;
@@ -51,7 +54,6 @@ import com.android.settings.HelpTrampoline;
5154 import com.android.settings.R;
5255 import com.android.settings.network.SubscriptionUtil;
5356 import com.android.settings.network.telephony.MobileNetworkActivity;
54-import com.android.settingslib.HelpUtils;
5557
5658 public class SimSelectNotification extends BroadcastReceiver {
5759 private static final String TAG = "SimSelectNotification";
@@ -159,6 +161,16 @@ public class SimSelectNotification extends BroadcastReceiver {
159161
160162 // Cancel any previous notifications
161163 cancelSimSelectNotification(context);
164+
165+ // If the dialog type is to dismiss.
166+ if (dialogType == EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS) {
167+ Intent newIntent = new Intent(context, SimDialogActivity.class);
168+ newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
169+ newIntent.putExtra(SimDialogActivity.DIALOG_TYPE_KEY, PICK_DISMISS);
170+ context.startActivity(newIntent);
171+ return;
172+ }
173+
162174 // Create a notification to tell the user that some defaults are missing
163175 createSimSelectNotification(context);
164176
@@ -186,10 +198,11 @@ public class SimSelectNotification extends BroadcastReceiver {
186198 final int warningType = intent.getIntExtra(EXTRA_SIM_COMBINATION_WARNING_TYPE,
187199 EXTRA_SIM_COMBINATION_WARNING_TYPE_NONE);
188200
201+ // Cancel any previous notifications
202+ cancelSimCombinationWarningNotification(context);
203+
189204 if (warningType == EXTRA_SIM_COMBINATION_WARNING_TYPE_DUAL_CDMA) {
190- // Cancel any previous notifications
191- cancelSimCombinationWarningNotification(context);
192- // Create a notification to tell the user that some defaults are missing
205+ // Create a notification to tell the user that there's a sim combination warning.
193206 createSimCombinationWarningNotification(context, intent);
194207 }
195208 }
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -21,11 +21,17 @@ import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_INCOMING_
2121 import static android.provider.Settings.ENABLE_MMS_DATA_REQUEST_REASON_OUTGOING_MMS;
2222 import static android.provider.Settings.EXTRA_ENABLE_MMS_DATA_REQUEST_REASON;
2323 import static android.provider.Settings.EXTRA_SUB_ID;
24+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE;
25+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA;
26+import static android.telephony.TelephonyManager.EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS;
2427 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_NAMES;
2528 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE;
2629 import static android.telephony.TelephonyManager.EXTRA_SIM_COMBINATION_WARNING_TYPE_DUAL_CDMA;
2730 import static android.telephony.data.ApnSetting.TYPE_MMS;
2831
32+import static com.android.settings.sim.SimDialogActivity.DATA_PICK;
33+import static com.android.settings.sim.SimDialogActivity.INVALID_PICK;
34+import static com.android.settings.sim.SimDialogActivity.PICK_DISMISS;
2935 import static com.android.settings.sim.SimSelectNotification.ENABLE_MMS_NOTIFICATION_CHANNEL;
3036 import static com.android.settings.sim.SimSelectNotification.ENABLE_MMS_NOTIFICATION_ID;
3137 import static com.android.settings.sim.SimSelectNotification.SIM_WARNING_NOTIFICATION_CHANNEL;
@@ -36,6 +42,7 @@ import static com.google.common.truth.Truth.assertThat;
3642 import static org.mockito.ArgumentMatchers.any;
3743 import static org.mockito.ArgumentMatchers.anyInt;
3844 import static org.mockito.ArgumentMatchers.eq;
45+import static org.mockito.Mockito.clearInvocations;
3946 import static org.mockito.Mockito.never;
4047 import static org.mockito.Mockito.verify;
4148 import static org.mockito.Mockito.when;
@@ -54,7 +61,6 @@ import android.telephony.SubscriptionManager;
5461 import android.telephony.TelephonyManager;
5562
5663 import com.android.settings.R;
57-
5864 import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
5965
6066 import org.junit.Before;
@@ -197,6 +203,50 @@ public class SimSelectNotificationTest {
197203 }
198204
199205 @Test
206+ public void onReceivePrimarySubListChange_WithDataPickExtra_shouldStartActivity() {
207+ Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
208+ intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
209+ EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA);
210+
211+ mSimSelectNotification.onReceive(mContext, intent);
212+
213+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
214+ verify(mContext).startActivity(intentCaptor.capture());
215+ Intent capturedIntent = intentCaptor.getValue();
216+ assertThat(capturedIntent).isNotNull();
217+ assertThat(capturedIntent.getComponent().getClassName()).isEqualTo(
218+ SimDialogActivity.class.getName());
219+ assertThat(capturedIntent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK)
220+ .isNotEqualTo(0);
221+ assertThat(capturedIntent.getIntExtra(SimDialogActivity.DIALOG_TYPE_KEY, INVALID_PICK))
222+ .isEqualTo(DATA_PICK);
223+ }
224+
225+ @Test
226+ public void onReceivePrimarySubListChange_WithDismissExtra_shouldDismiss() {
227+ Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
228+ intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
229+ EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DATA);
230+
231+ mSimSelectNotification.onReceive(mContext, intent);
232+ clearInvocations(mContext);
233+
234+ // Dismiss.
235+ intent.putExtra(EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE,
236+ EXTRA_DEFAULT_SUBSCRIPTION_SELECT_TYPE_DISMISS);
237+ mSimSelectNotification.onReceive(mContext, intent);
238+ ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
239+ verify(mContext).startActivity(intentCaptor.capture());
240+ Intent capturedIntent = intentCaptor.getValue();
241+ assertThat(capturedIntent).isNotNull();
242+ assertThat(capturedIntent.getComponent().getClassName()).isEqualTo(
243+ SimDialogActivity.class.getName());
244+ assertThat(capturedIntent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK)
245+ .isNotEqualTo(0);
246+ assertThat(capturedIntent.getIntExtra(SimDialogActivity.DIALOG_TYPE_KEY, INVALID_PICK))
247+ .isEqualTo(PICK_DISMISS);
248+ }
249+ @Test
200250 public void onReceivePrimarySubListChange_DualCdmaWarning_notificationShouldSend() {
201251 Intent intent = new Intent(TelephonyManager.ACTION_PRIMARY_SUBSCRIPTION_LIST_CHANGED);
202252