Loading src/java/com/android/internal/telephony/CallTracker.java +0 −47 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.AsyncResult; import android.os.Handler; import android.os.Message; import android.os.PersistableBundle; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; import android.text.TextUtils; Loading Loading @@ -167,52 +166,6 @@ public abstract class CallTracker extends Handler { return mPendingOperations == 0; } /** * Routine called from dial to check if the number is a test Emergency number * and if so remap the number. This allows a short emergency number to be remapped * to a regular number for testing how the frameworks handles emergency numbers * without actually calling an emergency number. * * This is not a full test and is not a substitute for testing real emergency * numbers but can be useful. * * To use this feature set a system property ril.test.emergencynumber to a pair of * numbers separated by a colon. If the first number matches the number parameter * this routine returns the second number. Example: * * ril.test.emergencynumber=112:1-123-123-45678 * * To test Dial 112 take call then hang up on MO device to enter ECM * see RIL#processSolicited RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND * * @param dialString to test if it should be remapped * @return the same number or the remapped number. */ protected String checkForTestEmergencyNumber(String dialString) { String testEn = SystemProperties.get("ril.test.emergencynumber"); if (DBG_POLL) { log("checkForTestEmergencyNumber: dialString=" + dialString + " testEn=" + testEn); } if (!TextUtils.isEmpty(testEn)) { String values[] = testEn.split(":"); log("checkForTestEmergencyNumber: values.length=" + values.length); if (values.length == 2) { if (values[0].equals( android.telephony.PhoneNumberUtils.stripSeparators(dialString))) { // mCi will be null for ImsPhoneCallTracker. if (mCi != null) { mCi.testingEmergencyCall(); } log("checkForTestEmergencyNumber: remap " + dialString + " to " + values[1]); dialString = values[1]; } } } return dialString; } protected String convertNumberIfNecessary(Phone phone, String dialNumber) { if (dialNumber == null) { return dialNumber; Loading src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +5 −6 Original line number Diff line number Diff line Loading @@ -322,8 +322,8 @@ public class GsmCdmaCallTracker extends CallTracker { throw new CallStateException("cannot dial in current state"); } mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, isEmergencyCall); mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, isEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialGsm - emergency dialer: " + intentExtras.getBoolean( TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL)); Loading Loading @@ -445,8 +445,8 @@ public class GsmCdmaCallTracker extends CallTracker { return dialThreeWay(dialString, intentExtras); } mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, isEmergencyCall); mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, isEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialGsm - emergency dialer: " + intentExtras.getBoolean( TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL)); Loading Loading @@ -502,8 +502,7 @@ public class GsmCdmaCallTracker extends CallTracker { disableDataCallInEmergencyCall(dialString); // Attach the new connection to foregroundCall mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, mIsInEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialThreeWay - emergency dialer " + intentExtras.getBoolean( Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +50 −2 Original line number Diff line number Diff line Loading @@ -1266,7 +1266,14 @@ public class GsmCdmaPhone extends Phone { if (!isPhoneTypeGsm() && dialArgs.uusInfo != null) { throw new CallStateException("Sending UUS information NOT supported in CDMA!"); } String possibleEmergencyNumber = checkForTestEmergencyNumber(dialString); // Record if the dialed number was swapped for a test emergency number. boolean isDialedNumberSwapped = !TextUtils.equals(dialString, possibleEmergencyNumber); if (isDialedNumberSwapped) { logi("dialString replaced for possible emergency number: " + dialString + " -> " + possibleEmergencyNumber); dialString = possibleEmergencyNumber; } boolean isEmergency = PhoneNumberUtils.isEmergencyNumber(getSubId(), dialString); Phone imsPhone = mImsPhone; mDialArgs = dialArgs; Loading Loading @@ -1299,6 +1306,7 @@ public class GsmCdmaPhone extends Phone { if (DBG) { logd("useImsForCall=" + useImsForCall + ", isEmergency=" + isEmergency + ", useImsForEmergency=" + useImsForEmergency + ", useImsForUt=" + useImsForUt + ", isUt=" + isMmiCode Loading Loading @@ -1373,7 +1381,11 @@ public class GsmCdmaPhone extends Phone { "cannot dial voice call in out of service"); } if (DBG) logd("Trying (non-IMS) CS call"); if (isDialedNumberSwapped && isEmergency) { // Triggers ECM when CS call ends only for test emergency calls using // ril.test.emergencynumber. mCi.testingEmergencyCall(); } if (isPhoneTypeGsm()) { return dialInternal(dialString, new DialArgs.Builder<>() .setIntentExtras(dialArgs.intentExtras) Loading Loading @@ -3965,6 +3977,42 @@ public class GsmCdmaPhone extends Phone { return status; } /** * This allows a short number to be remapped to a test emergency number for testing how the * frameworks handles Emergency Callback Mode without actually calling an emergency number. * * This is not a full test and is not a substitute for testing real emergency * numbers but can be useful. * * To use this feature, first set a test emergency number using * adb shell cmd phone emergency-number-test-mode -a 1-555-555-1212 * * and then set the system property ril.test.emergencynumber to a pair of * numbers separated by a colon. If the first number matches the number parameter * this routine returns the second number. Example: * * ril.test.emergencynumber=411:1-555-555-1212 * * To test Dial 411 take call then hang up on MO device to enter ECM. * * @param dialString to test if it should be remapped * @return the same number or the remapped number. */ private String checkForTestEmergencyNumber(String dialString) { String testEn = SystemProperties.get("ril.test.emergencynumber"); if (!TextUtils.isEmpty(testEn)) { String[] values = testEn.split(":"); logd("checkForTestEmergencyNumber: values.length=" + values.length); if (values.length == 2) { if (values[0].equals(PhoneNumberUtils.stripSeparators(dialString))) { logd("checkForTestEmergencyNumber: remap " + dialString + " to " + values[1]); dialString = values[1]; } } } return dialString; } /** * @return operator numeric. */ Loading src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +16 −13 Original line number Diff line number Diff line Loading @@ -416,10 +416,11 @@ public class IccSmsInterfaceManager { * A permissions check before passing to {@link IccSmsInterfaceManager#sendDataInternal}. * This method checks if the calling package or itself has the permission to send the data sms. */ public void sendDataWithSelfPermissions(String callingPackage, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendDataWithSelfPermissions(String callingPackage, String callingAttributionTag, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributionTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading Loading @@ -500,10 +501,11 @@ public class IccSmsInterfaceManager { * A permissions check before passing to {@link IccSmsInterfaceManager#sendTextInternal}. * This method checks if the calling package or itself has the permission to send the sms. */ public void sendTextWithSelfPermissions(String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendTextWithSelfPermissions(String callingPackage, String callingAttributeTag, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributeTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading Loading @@ -624,11 +626,12 @@ public class IccSmsInterfaceManager { * Any Other values including negative considered as Invalid Validity Period of the message. */ public void sendTextWithOptions(String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp, int priority, boolean expectMore, int validityPeriod) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendTextWithOptions(String callingPackage, String callingAttributionTag, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp, int priority, boolean expectMore, int validityPeriod) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributionTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading src/java/com/android/internal/telephony/RIL.java +39 −20 Original line number Diff line number Diff line Loading @@ -2912,13 +2912,7 @@ public class RIL extends BaseCommands implements CommandsInterface { mPreferredNetworkType = networkType; mMetrics.writeSetPreferredNetworkType(mPhoneId, networkType); if (mRadioVersion.lessOrEqual(RADIO_HAL_VERSION_1_3)) { try { radioProxy.setPreferredNetworkType(rr.mSerial, networkType); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkType", e); } } else if (mRadioVersion.equals(RADIO_HAL_VERSION_1_4)) { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)) { android.hardware.radio.V1_4.IRadio radioProxy14 = (android.hardware.radio.V1_4.IRadio) radioProxy; try { Loading @@ -2928,6 +2922,12 @@ public class RIL extends BaseCommands implements CommandsInterface { } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkTypeBitmap", e); } } else { try { radioProxy.setPreferredNetworkType(rr.mSerial, networkType); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkType", e); } } } } Loading Loading @@ -3080,13 +3080,7 @@ public class RIL extends BaseCommands implements CommandsInterface { RILRequest rr = obtainRequest(RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, result, mRILDefaultWorkSource); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); if (mRadioVersion.lessOrEqual(RADIO_HAL_VERSION_1_3)) { try { radioProxy.getPreferredNetworkType(rr.mSerial); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkType", e); } } else if (mRadioVersion.equals(RADIO_HAL_VERSION_1_4)) { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)) { android.hardware.radio.V1_4.IRadio radioProxy14 = (android.hardware.radio.V1_4.IRadio) radioProxy; try { Loading @@ -3094,6 +3088,12 @@ public class RIL extends BaseCommands implements CommandsInterface { } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkTypeBitmap", e); } } else { try { radioProxy.getPreferredNetworkType(rr.mSerial); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkType", e); } } } } Loading Loading @@ -4978,9 +4978,9 @@ public class RIL extends BaseCommands implements CommandsInterface { req.cid = contextId; if (packetData.dstAddress instanceof Inet4Address) { if (packetData.getDstAddress() instanceof Inet4Address) { req.type = android.hardware.radio.V1_1.KeepaliveType.NATT_IPV4; } else if (packetData.dstAddress instanceof Inet6Address) { } else if (packetData.getDstAddress() instanceof Inet6Address) { req.type = android.hardware.radio.V1_1.KeepaliveType.NATT_IPV6; } else { AsyncResult.forMessage(result, null, Loading @@ -4989,12 +4989,14 @@ public class RIL extends BaseCommands implements CommandsInterface { return; } final InetAddress srcAddress = packetData.getSrcAddress(); final InetAddress dstAddress = packetData.getDstAddress(); appendPrimitiveArrayToArrayList( packetData.srcAddress.getAddress(), req.sourceAddress); req.sourcePort = packetData.srcPort; srcAddress.getAddress(), req.sourceAddress); req.sourcePort = packetData.getSrcPort(); appendPrimitiveArrayToArrayList( packetData.dstAddress.getAddress(), req.destinationAddress); req.destinationPort = packetData.dstPort; dstAddress.getAddress(), req.destinationAddress); req.destinationPort = packetData.getDstPort(); req.maxKeepaliveIntervalMillis = intervalMillis; radioProxy11.startKeepalive(rr.mSerial, req); Loading Loading @@ -6544,6 +6546,23 @@ public class RIL extends BaseCommands implements CommandsInterface { return response; } /** * Convert CellInfo defined in 1.5/types.hal to CellInfo type. * @param records List of CellInfo defined in 1.5/types.hal. * @return List of converted CellInfo object. */ @VisibleForTesting public static ArrayList<CellInfo> convertHalCellInfoList_1_5( ArrayList<android.hardware.radio.V1_5.CellInfo> records) { ArrayList<CellInfo> response = new ArrayList<>(records.size()); final long nanotime = SystemClock.elapsedRealtimeNanos(); for (android.hardware.radio.V1_5.CellInfo record : records) { response.add(CellInfo.create(record, nanotime)); } return response; } /** * Convert SetupDataCallResult defined in 1.0, 1.4, or 1.5 types.hal into DataCallResponse * @param dcResult setup data call result Loading Loading
src/java/com/android/internal/telephony/CallTracker.java +0 −47 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.AsyncResult; import android.os.Handler; import android.os.Message; import android.os.PersistableBundle; import android.os.SystemProperties; import android.telephony.CarrierConfigManager; import android.text.TextUtils; Loading Loading @@ -167,52 +166,6 @@ public abstract class CallTracker extends Handler { return mPendingOperations == 0; } /** * Routine called from dial to check if the number is a test Emergency number * and if so remap the number. This allows a short emergency number to be remapped * to a regular number for testing how the frameworks handles emergency numbers * without actually calling an emergency number. * * This is not a full test and is not a substitute for testing real emergency * numbers but can be useful. * * To use this feature set a system property ril.test.emergencynumber to a pair of * numbers separated by a colon. If the first number matches the number parameter * this routine returns the second number. Example: * * ril.test.emergencynumber=112:1-123-123-45678 * * To test Dial 112 take call then hang up on MO device to enter ECM * see RIL#processSolicited RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND * * @param dialString to test if it should be remapped * @return the same number or the remapped number. */ protected String checkForTestEmergencyNumber(String dialString) { String testEn = SystemProperties.get("ril.test.emergencynumber"); if (DBG_POLL) { log("checkForTestEmergencyNumber: dialString=" + dialString + " testEn=" + testEn); } if (!TextUtils.isEmpty(testEn)) { String values[] = testEn.split(":"); log("checkForTestEmergencyNumber: values.length=" + values.length); if (values.length == 2) { if (values[0].equals( android.telephony.PhoneNumberUtils.stripSeparators(dialString))) { // mCi will be null for ImsPhoneCallTracker. if (mCi != null) { mCi.testingEmergencyCall(); } log("checkForTestEmergencyNumber: remap " + dialString + " to " + values[1]); dialString = values[1]; } } } return dialString; } protected String convertNumberIfNecessary(Phone phone, String dialNumber) { if (dialNumber == null) { return dialNumber; Loading
src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +5 −6 Original line number Diff line number Diff line Loading @@ -322,8 +322,8 @@ public class GsmCdmaCallTracker extends CallTracker { throw new CallStateException("cannot dial in current state"); } mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, isEmergencyCall); mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, isEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialGsm - emergency dialer: " + intentExtras.getBoolean( TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL)); Loading Loading @@ -445,8 +445,8 @@ public class GsmCdmaCallTracker extends CallTracker { return dialThreeWay(dialString, intentExtras); } mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, isEmergencyCall); mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, isEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialGsm - emergency dialer: " + intentExtras.getBoolean( TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL)); Loading Loading @@ -502,8 +502,7 @@ public class GsmCdmaCallTracker extends CallTracker { disableDataCallInEmergencyCall(dialString); // Attach the new connection to foregroundCall mPendingMO = new GsmCdmaConnection(mPhone, checkForTestEmergencyNumber(dialString), this, mForegroundCall, mPendingMO = new GsmCdmaConnection(mPhone, dialString, this, mForegroundCall, mIsInEmergencyCall); if (intentExtras != null) { Rlog.d(LOG_TAG, "dialThreeWay - emergency dialer " + intentExtras.getBoolean( Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +50 −2 Original line number Diff line number Diff line Loading @@ -1266,7 +1266,14 @@ public class GsmCdmaPhone extends Phone { if (!isPhoneTypeGsm() && dialArgs.uusInfo != null) { throw new CallStateException("Sending UUS information NOT supported in CDMA!"); } String possibleEmergencyNumber = checkForTestEmergencyNumber(dialString); // Record if the dialed number was swapped for a test emergency number. boolean isDialedNumberSwapped = !TextUtils.equals(dialString, possibleEmergencyNumber); if (isDialedNumberSwapped) { logi("dialString replaced for possible emergency number: " + dialString + " -> " + possibleEmergencyNumber); dialString = possibleEmergencyNumber; } boolean isEmergency = PhoneNumberUtils.isEmergencyNumber(getSubId(), dialString); Phone imsPhone = mImsPhone; mDialArgs = dialArgs; Loading Loading @@ -1299,6 +1306,7 @@ public class GsmCdmaPhone extends Phone { if (DBG) { logd("useImsForCall=" + useImsForCall + ", isEmergency=" + isEmergency + ", useImsForEmergency=" + useImsForEmergency + ", useImsForUt=" + useImsForUt + ", isUt=" + isMmiCode Loading Loading @@ -1373,7 +1381,11 @@ public class GsmCdmaPhone extends Phone { "cannot dial voice call in out of service"); } if (DBG) logd("Trying (non-IMS) CS call"); if (isDialedNumberSwapped && isEmergency) { // Triggers ECM when CS call ends only for test emergency calls using // ril.test.emergencynumber. mCi.testingEmergencyCall(); } if (isPhoneTypeGsm()) { return dialInternal(dialString, new DialArgs.Builder<>() .setIntentExtras(dialArgs.intentExtras) Loading Loading @@ -3965,6 +3977,42 @@ public class GsmCdmaPhone extends Phone { return status; } /** * This allows a short number to be remapped to a test emergency number for testing how the * frameworks handles Emergency Callback Mode without actually calling an emergency number. * * This is not a full test and is not a substitute for testing real emergency * numbers but can be useful. * * To use this feature, first set a test emergency number using * adb shell cmd phone emergency-number-test-mode -a 1-555-555-1212 * * and then set the system property ril.test.emergencynumber to a pair of * numbers separated by a colon. If the first number matches the number parameter * this routine returns the second number. Example: * * ril.test.emergencynumber=411:1-555-555-1212 * * To test Dial 411 take call then hang up on MO device to enter ECM. * * @param dialString to test if it should be remapped * @return the same number or the remapped number. */ private String checkForTestEmergencyNumber(String dialString) { String testEn = SystemProperties.get("ril.test.emergencynumber"); if (!TextUtils.isEmpty(testEn)) { String[] values = testEn.split(":"); logd("checkForTestEmergencyNumber: values.length=" + values.length); if (values.length == 2) { if (values[0].equals(PhoneNumberUtils.stripSeparators(dialString))) { logd("checkForTestEmergencyNumber: remap " + dialString + " to " + values[1]); dialString = values[1]; } } } return dialString; } /** * @return operator numeric. */ Loading
src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +16 −13 Original line number Diff line number Diff line Loading @@ -416,10 +416,11 @@ public class IccSmsInterfaceManager { * A permissions check before passing to {@link IccSmsInterfaceManager#sendDataInternal}. * This method checks if the calling package or itself has the permission to send the data sms. */ public void sendDataWithSelfPermissions(String callingPackage, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendDataWithSelfPermissions(String callingPackage, String callingAttributionTag, String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributionTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading Loading @@ -500,10 +501,11 @@ public class IccSmsInterfaceManager { * A permissions check before passing to {@link IccSmsInterfaceManager#sendTextInternal}. * This method checks if the calling package or itself has the permission to send the sms. */ public void sendTextWithSelfPermissions(String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendTextWithSelfPermissions(String callingPackage, String callingAttributeTag, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage, boolean isForVvm) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributeTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading Loading @@ -624,11 +626,12 @@ public class IccSmsInterfaceManager { * Any Other values including negative considered as Invalid Validity Period of the message. */ public void sendTextWithOptions(String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp, int priority, boolean expectMore, int validityPeriod) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, "Sending SMS message")) { public void sendTextWithOptions(String callingPackage, String callingAttributionTag, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessageForNonDefaultSmsApp, int priority, boolean expectMore, int validityPeriod) { if (!mSmsPermissions.checkCallingOrSelfCanSendSms(callingPackage, callingAttributionTag, "Sending SMS message")) { returnUnspecifiedFailure(sentIntent); return; } Loading
src/java/com/android/internal/telephony/RIL.java +39 −20 Original line number Diff line number Diff line Loading @@ -2912,13 +2912,7 @@ public class RIL extends BaseCommands implements CommandsInterface { mPreferredNetworkType = networkType; mMetrics.writeSetPreferredNetworkType(mPhoneId, networkType); if (mRadioVersion.lessOrEqual(RADIO_HAL_VERSION_1_3)) { try { radioProxy.setPreferredNetworkType(rr.mSerial, networkType); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkType", e); } } else if (mRadioVersion.equals(RADIO_HAL_VERSION_1_4)) { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)) { android.hardware.radio.V1_4.IRadio radioProxy14 = (android.hardware.radio.V1_4.IRadio) radioProxy; try { Loading @@ -2928,6 +2922,12 @@ public class RIL extends BaseCommands implements CommandsInterface { } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkTypeBitmap", e); } } else { try { radioProxy.setPreferredNetworkType(rr.mSerial, networkType); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "setPreferredNetworkType", e); } } } } Loading Loading @@ -3080,13 +3080,7 @@ public class RIL extends BaseCommands implements CommandsInterface { RILRequest rr = obtainRequest(RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE, result, mRILDefaultWorkSource); if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)); if (mRadioVersion.lessOrEqual(RADIO_HAL_VERSION_1_3)) { try { radioProxy.getPreferredNetworkType(rr.mSerial); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkType", e); } } else if (mRadioVersion.equals(RADIO_HAL_VERSION_1_4)) { if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_4)) { android.hardware.radio.V1_4.IRadio radioProxy14 = (android.hardware.radio.V1_4.IRadio) radioProxy; try { Loading @@ -3094,6 +3088,12 @@ public class RIL extends BaseCommands implements CommandsInterface { } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkTypeBitmap", e); } } else { try { radioProxy.getPreferredNetworkType(rr.mSerial); } catch (RemoteException | RuntimeException e) { handleRadioProxyExceptionForRR(rr, "getPreferredNetworkType", e); } } } } Loading Loading @@ -4978,9 +4978,9 @@ public class RIL extends BaseCommands implements CommandsInterface { req.cid = contextId; if (packetData.dstAddress instanceof Inet4Address) { if (packetData.getDstAddress() instanceof Inet4Address) { req.type = android.hardware.radio.V1_1.KeepaliveType.NATT_IPV4; } else if (packetData.dstAddress instanceof Inet6Address) { } else if (packetData.getDstAddress() instanceof Inet6Address) { req.type = android.hardware.radio.V1_1.KeepaliveType.NATT_IPV6; } else { AsyncResult.forMessage(result, null, Loading @@ -4989,12 +4989,14 @@ public class RIL extends BaseCommands implements CommandsInterface { return; } final InetAddress srcAddress = packetData.getSrcAddress(); final InetAddress dstAddress = packetData.getDstAddress(); appendPrimitiveArrayToArrayList( packetData.srcAddress.getAddress(), req.sourceAddress); req.sourcePort = packetData.srcPort; srcAddress.getAddress(), req.sourceAddress); req.sourcePort = packetData.getSrcPort(); appendPrimitiveArrayToArrayList( packetData.dstAddress.getAddress(), req.destinationAddress); req.destinationPort = packetData.dstPort; dstAddress.getAddress(), req.destinationAddress); req.destinationPort = packetData.getDstPort(); req.maxKeepaliveIntervalMillis = intervalMillis; radioProxy11.startKeepalive(rr.mSerial, req); Loading Loading @@ -6544,6 +6546,23 @@ public class RIL extends BaseCommands implements CommandsInterface { return response; } /** * Convert CellInfo defined in 1.5/types.hal to CellInfo type. * @param records List of CellInfo defined in 1.5/types.hal. * @return List of converted CellInfo object. */ @VisibleForTesting public static ArrayList<CellInfo> convertHalCellInfoList_1_5( ArrayList<android.hardware.radio.V1_5.CellInfo> records) { ArrayList<CellInfo> response = new ArrayList<>(records.size()); final long nanotime = SystemClock.elapsedRealtimeNanos(); for (android.hardware.radio.V1_5.CellInfo record : records) { response.add(CellInfo.create(record, nanotime)); } return response; } /** * Convert SetupDataCallResult defined in 1.0, 1.4, or 1.5 types.hal into DataCallResponse * @param dcResult setup data call result Loading