Merge "Query APN protocol for emergency SUPL without SIM"

This commit is contained in:
Shinru Han
2019-04-03 02:48:27 +00:00
committed by Android (Google) Code Review

View File

@@ -27,6 +27,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.PowerManager;
import android.provider.Telephony.Carriers;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.util.Log;
@@ -591,13 +592,25 @@ class GnssNetworkConnectivityHandler {
}
TelephonyManager phone = (TelephonyManager)
mContext.getSystemService(Context.TELEPHONY_SERVICE);
ServiceState serviceState = phone.getServiceState();
String projection = null;
String selection = null;
// Carrier configuration may override framework roaming state, we need to use the actual
// modem roaming state instead of the framework roaming state.
boolean isDataRoamingFromRegistration = phone.getServiceState()
.getDataRoamingFromRegistration();
String projection = isDataRoamingFromRegistration ? Carriers.ROAMING_PROTOCOL :
Carriers.PROTOCOL;
String selection = String.format("current = 1 and apn = '%s' and carrier_enabled = 1", apn);
if (serviceState != null && serviceState.getDataRoamingFromRegistration()) {
projection = Carriers.ROAMING_PROTOCOL;
} else {
projection = Carriers.PROTOCOL;
}
// No SIM case for emergency
if (TelephonyManager.NETWORK_TYPE_UNKNOWN == phone.getNetworkType()
&& AGPS_TYPE_EIMS == mAGpsType) {
selection = String.format(
"type like '%%emergency%%' and apn = '%s' and carrier_enabled = 1", apn);
} else {
selection = String.format("current = 1 and apn = '%s' and carrier_enabled = 1", apn);
}
try (Cursor cursor = mContext.getContentResolver().query(
Carriers.CONTENT_URI,
new String[]{projection},
@@ -613,7 +626,7 @@ class GnssNetworkConnectivityHandler {
Log.e(TAG, "Error encountered on APN query for: " + apn, e);
}
return APN_INVALID;
return APN_IPV4V6;
}
private int translateToApnIpType(String ipProtocol, String apn) {
@@ -630,7 +643,7 @@ class GnssNetworkConnectivityHandler {
// we hit the default case so the ipProtocol is not recognized
String message = String.format("Unknown IP Protocol: %s, for APN: %s", ipProtocol, apn);
Log.e(TAG, message);
return APN_INVALID;
return APN_IPV4V6;
}
// AGPS support