[Settings] Adjusted the API of Settings app
The API of Settings app get changed in order to support large screen.
This is a fix to adopt the change related to this work.
A short brief:
1. Accept ACTION_MAIN for launching MobileNetworkActivity.
2. Support deep-link intent while MobileNetworkActivity in foreground.
3. Avoid from binding MobileNetworkActivity as a single instance.
Bug: 230047450
Bug: 234406562
Bug: 229371407
Test: local & unittest
Change-Id: Ifcb9d4c564839199d998bd503f390f021c6bf3ad
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index ee0743a..c3ab8e2 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -22,8 +22,6 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
import android.telephony.ims.ImsRcsManager;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
@@ -33,8 +31,7 @@
import com.android.settings.biometrics.face.FaceSettings;
import com.android.settings.core.FeatureFlags;
import com.android.settings.enterprise.EnterprisePrivacySettings;
-import com.android.settings.network.SubscriptionUtil;
-import com.android.settings.network.telephony.MobileNetworkUtils;
+import com.android.settings.network.MobileNetworkIntentConverter;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
import com.android.settings.security.SecuritySettingsFeatureProvider;
@@ -370,41 +367,37 @@
public static class PowerMenuSettingsActivity extends SettingsActivity {}
public static class MobileNetworkActivity extends SettingsActivity {
+ public static final String TAG = "MobileNetworkActivity";
public static final String EXTRA_MMS_MESSAGE = "mms_message";
public static final String EXTRA_SHOW_CAPABILITY_DISCOVERY_OPT_IN =
"show_capability_discovery_opt_in";
+ private MobileNetworkIntentConverter mIntentConverter;
+
+ /**
+ * Override of #onNewIntent() requires Activity to have "singleTop" launch mode within
+ * AndroidManifest.xml
+ */
@Override
- public Intent getIntent() {
- final Intent intent = new Intent(super.getIntent());
- int subId = intent.getIntExtra(android.provider.Settings.EXTRA_SUB_ID,
- SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- SubscriptionInfo subInfo = SubscriptionUtil.getSubscriptionOrDefault(
- getApplicationContext(), subId);
- CharSequence title = SubscriptionUtil.getUniqueSubscriptionDisplayName(
- subInfo, getApplicationContext());
- intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
- intent.putExtra(android.provider.Settings.EXTRA_SUB_ID, subId);
- if (android.provider.Settings.ACTION_MMS_MESSAGE_SETTING.equals(intent.getAction())) {
- // highlight "mms_message" preference.
- intent.putExtra(EXTRA_FRAGMENT_ARG_KEY, EXTRA_MMS_MESSAGE);
- }
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
- if (doesIntentContainOptInAction(intent)) {
- intent.putExtra(EXTRA_SHOW_CAPABILITY_DISCOVERY_OPT_IN,
- maybeShowContactDiscoveryDialog(subId));
- }
+ Log.d(TAG, "Starting onNewIntent");
- return intent;
+ createUiFromIntent(null /* savedState */, convertIntent(intent));
}
- private boolean maybeShowContactDiscoveryDialog(int subId) {
- // If this activity was launched using ACTION_SHOW_CAPABILITY_DISCOVERY_OPT_IN, show the
- // associated dialog only if the opt-in has not been granted yet.
- return MobileNetworkUtils.isContactDiscoveryVisible(getApplicationContext(), subId)
- // has the user already enabled this configuration?
- && !MobileNetworkUtils.isContactDiscoveryEnabled(
- getApplicationContext(), subId);
+ @Override
+ public Intent getIntent() {
+ return convertIntent(super.getIntent());
+ }
+
+ private Intent convertIntent(Intent copyFrom) {
+ if (mIntentConverter == null) {
+ mIntentConverter = new MobileNetworkIntentConverter(this);
+ }
+ Intent intent = mIntentConverter.apply(copyFrom);
+ return (intent == null) ? copyFrom : intent;
}
public static boolean doesIntentContainOptInAction(Intent intent) {