Merge "Fix settings crashes on missing Telephony features" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
f38579f786
@@ -450,8 +450,16 @@ public class SimStatusDialogController implements DefaultLifecycleObserver {
|
|||||||
String dataNetworkTypeName = null;
|
String dataNetworkTypeName = null;
|
||||||
String voiceNetworkTypeName = null;
|
String voiceNetworkTypeName = null;
|
||||||
final int subId = mSubscriptionInfo.getSubscriptionId();
|
final int subId = mSubscriptionInfo.getSubscriptionId();
|
||||||
final int actualDataNetworkType = getTelephonyManager().getDataNetworkType();
|
int actualDataNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
|
||||||
final int actualVoiceNetworkType = getTelephonyManager().getVoiceNetworkType();
|
int actualVoiceNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
|
||||||
|
PackageManager pm = mContext.getPackageManager();
|
||||||
|
if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS)) {
|
||||||
|
actualDataNetworkType = getTelephonyManager().getDataNetworkType();
|
||||||
|
}
|
||||||
|
if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CALLING)) {
|
||||||
|
actualVoiceNetworkType = getTelephonyManager().getVoiceNetworkType();
|
||||||
|
}
|
||||||
|
|
||||||
final int overrideNetworkType = mTelephonyDisplayInfo == null
|
final int overrideNetworkType = mTelephonyDisplayInfo == null
|
||||||
? TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE
|
? TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE
|
||||||
: mTelephonyDisplayInfo.getOverrideNetworkType();
|
: mTelephonyDisplayInfo.getOverrideNetworkType();
|
||||||
|
@@ -47,6 +47,8 @@ public class ImsQueryEnhanced4gLteModeUserSetting implements ImsQuery {
|
|||||||
return imsMmTelManager.isAdvancedCallingSettingEnabled();
|
return imsMmTelManager.isAdvancedCallingSettingEnabled();
|
||||||
} catch (IllegalArgumentException exception) {
|
} catch (IllegalArgumentException exception) {
|
||||||
Log.w(LOG_TAG, "fail to get VoLte settings. subId=" + mSubId, exception);
|
Log.w(LOG_TAG, "fail to get VoLte settings. subId=" + mSubId, exception);
|
||||||
|
} catch (UnsupportedOperationException ex) {
|
||||||
|
// expected on devices without IMS
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -112,8 +112,12 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
|
|||||||
return CONDITIONALLY_UNAVAILABLE;
|
return CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!queryState.isReadyToVoLte()) {
|
try {
|
||||||
return CONDITIONALLY_UNAVAILABLE;
|
if (!queryState.isReadyToVoLte()) {
|
||||||
|
return CONDITIONALLY_UNAVAILABLE;
|
||||||
|
}
|
||||||
|
} catch (UnsupportedOperationException ex) {
|
||||||
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
return (isUserControlAllowed(carrierConfig) && queryState.isAllowUserControl())
|
return (isUserControlAllowed(carrierConfig) && queryState.isAllowUserControl())
|
||||||
? AVAILABLE : AVAILABLE_UNSEARCHABLE;
|
? AVAILABLE : AVAILABLE_UNSEARCHABLE;
|
||||||
|
@@ -40,6 +40,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.ServiceState;
|
||||||
@@ -67,9 +68,9 @@ import org.mockito.MockitoAnnotations;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.Executor;
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class SimStatusDialogControllerTest {
|
public class SimStatusDialogControllerTest {
|
||||||
@@ -95,6 +96,7 @@ public class SimStatusDialogControllerTest {
|
|||||||
|
|
||||||
private SimStatusDialogController mController;
|
private SimStatusDialogController mController;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private PackageManager mPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private LifecycleOwner mLifecycleOwner;
|
private LifecycleOwner mLifecycleOwner;
|
||||||
private Lifecycle mLifecycle;
|
private Lifecycle mLifecycle;
|
||||||
@@ -112,6 +114,12 @@ public class SimStatusDialogControllerTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
when(mDialog.getContext()).thenReturn(mContext);
|
when(mDialog.getContext()).thenReturn(mContext);
|
||||||
|
mPackageManager = spy(mContext.getPackageManager());
|
||||||
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_RADIO_ACCESS))
|
||||||
|
.thenReturn(true);
|
||||||
|
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CALLING))
|
||||||
|
.thenReturn(true);
|
||||||
mLifecycle = new Lifecycle(mLifecycleOwner);
|
mLifecycle = new Lifecycle(mLifecycleOwner);
|
||||||
|
|
||||||
mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
|
mTelephonyManager = spy(mContext.getSystemService(TelephonyManager.class));
|
||||||
|
Reference in New Issue
Block a user