[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
This commit is contained in:
@@ -22,8 +22,6 @@ import android.content.ActivityNotFoundException;
|
||||
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.internal.annotations.VisibleForTesting;
|
||||
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 class Settings extends SettingsActivity {
|
||||
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) {
|
||||
|
Reference in New Issue
Block a user