Loading src/java/android/telephony/SmsManager.java +6 −3 Original line number Diff line number Diff line Loading @@ -31,9 +31,9 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import com.android.internal.telephony.IMms; import com.android.internal.telephony.ISms; import com.android.internal.telephony.SmsRawData; import com.android.internal.telephony.IMms; import com.android.internal.telephony.uicc.IccConstants; import java.util.ArrayList; Loading Loading @@ -335,11 +335,14 @@ public final class SmsManager { * A variant of {@link SmsManager#sendTextMessage} that allows self to be the caller. This is * for internal use only. * * @param persistMessage whether to persist the sent message in the SMS app. the caller must be * the Phone process if set to false. * * @hide */ public void sendTextMessageWithSelfPermissions( String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage) { if (TextUtils.isEmpty(destinationAddress)) { throw new IllegalArgumentException("Invalid destinationAddress"); } Loading @@ -353,7 +356,7 @@ public final class SmsManager { iccISms.sendTextForSubscriberWithSelfPermissions(getSubscriptionId(), ActivityThread.currentPackageName(), destinationAddress, scAddress, text, sentIntent, deliveryIntent); scAddress, text, sentIntent, deliveryIntent, persistMessage); } catch (RemoteException ex) { // ignore it } Loading src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +19 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.internal.telephony; import static android.telephony.SmsManager.STATUS_ON_ICC_FREE; import static android.telephony.SmsManager.STATUS_ON_ICC_READ; import static android.telephony.SmsManager.STATUS_ON_ICC_UNREAD; import android.Manifest; import android.app.AppOpsManager; import android.app.PendingIntent; Loading @@ -28,15 +32,17 @@ import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.Message; import android.os.Process; import android.os.UserManager; import android.provider.Telephony; import android.telephony.Rlog; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; import com.android.internal.telephony.uicc.IccConstants; import com.android.internal.telephony.uicc.IccFileHandler; import com.android.internal.telephony.uicc.IccUtils; Loading @@ -47,12 +53,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static android.telephony.SmsManager.STATUS_ON_ICC_FREE; import static android.telephony.SmsManager.STATUS_ON_ICC_READ; import static android.telephony.SmsManager.STATUS_ON_ICC_UNREAD; import android.telephony.TelephonyManager; /** * IccSmsInterfaceManager to provide an inter-process communication to * access Sms in Icc. Loading Loading @@ -399,12 +399,13 @@ public class IccSmsInterfaceManager { * 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) { String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage) { mPhone.getContext().enforceCallingOrSelfPermission( Manifest.permission.SEND_SMS, "Sending SMS message"); sendTextInternal(callingPackage, destAddr, scAddr, text, sentIntent, deliveryIntent, true /* persistMessageForNonDefaultSmsApp */); persistMessage); } /** Loading Loading @@ -445,8 +446,8 @@ public class IccSmsInterfaceManager { return; } if (!persistMessageForNonDefaultSmsApp) { // Only allow carrier app to skip auto message persistence. enforceCarrierPrivilege(); // Only allow carrier app or phone process to skip auto message persistence. enforceCarrierOrPhonePrivilege(); } destAddr = filterDestAddress(destAddr); mDispatcher.sendText(destAddr, scAddr, text, sentIntent, deliveryIntent, Loading Loading @@ -1114,6 +1115,13 @@ public class IccSmsInterfaceManager { } } private void enforceCarrierOrPhonePrivilege() { int callingUid = Binder.getCallingUid(); if (callingUid != Process.PHONE_UID) { enforceCarrierPrivilege(); } } private String filterDestAddress(String destAddr) { String result = null; result = SmsNumberUtils.filterDestAddr(mPhone, destAddr); Loading src/java/com/android/internal/telephony/UiccSmsController.java +2 −2 Original line number Diff line number Diff line Loading @@ -144,11 +144,11 @@ public class UiccSmsController extends ISms.Stub { public void sendTextForSubscriberWithSelfPermissions(int subId, String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent deliveryIntent, boolean persistMessage) { IccSmsInterfaceManager iccSmsIntMgr = getIccSmsInterfaceManager(subId); if (iccSmsIntMgr != null) { iccSmsIntMgr.sendTextWithSelfPermissions(callingPackage, destAddr, scAddr, text, sentIntent, deliveryIntent); sentIntent, deliveryIntent, persistMessage); } else { Rlog.e(LOG_TAG,"sendText iccSmsIntMgr is null for" + " Subscription: " + subId); Loading Loading
src/java/android/telephony/SmsManager.java +6 −3 Original line number Diff line number Diff line Loading @@ -31,9 +31,9 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import com.android.internal.telephony.IMms; import com.android.internal.telephony.ISms; import com.android.internal.telephony.SmsRawData; import com.android.internal.telephony.IMms; import com.android.internal.telephony.uicc.IccConstants; import java.util.ArrayList; Loading Loading @@ -335,11 +335,14 @@ public final class SmsManager { * A variant of {@link SmsManager#sendTextMessage} that allows self to be the caller. This is * for internal use only. * * @param persistMessage whether to persist the sent message in the SMS app. the caller must be * the Phone process if set to false. * * @hide */ public void sendTextMessageWithSelfPermissions( String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage) { if (TextUtils.isEmpty(destinationAddress)) { throw new IllegalArgumentException("Invalid destinationAddress"); } Loading @@ -353,7 +356,7 @@ public final class SmsManager { iccISms.sendTextForSubscriberWithSelfPermissions(getSubscriptionId(), ActivityThread.currentPackageName(), destinationAddress, scAddress, text, sentIntent, deliveryIntent); scAddress, text, sentIntent, deliveryIntent, persistMessage); } catch (RemoteException ex) { // ignore it } Loading
src/java/com/android/internal/telephony/IccSmsInterfaceManager.java +19 −11 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.internal.telephony; import static android.telephony.SmsManager.STATUS_ON_ICC_FREE; import static android.telephony.SmsManager.STATUS_ON_ICC_READ; import static android.telephony.SmsManager.STATUS_ON_ICC_UNREAD; import android.Manifest; import android.app.AppOpsManager; import android.app.PendingIntent; Loading @@ -28,15 +32,17 @@ import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.Message; import android.os.Process; import android.os.UserManager; import android.provider.Telephony; import android.telephony.Rlog; import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; import com.android.internal.telephony.uicc.IccConstants; import com.android.internal.telephony.uicc.IccFileHandler; import com.android.internal.telephony.uicc.IccUtils; Loading @@ -47,12 +53,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static android.telephony.SmsManager.STATUS_ON_ICC_FREE; import static android.telephony.SmsManager.STATUS_ON_ICC_READ; import static android.telephony.SmsManager.STATUS_ON_ICC_UNREAD; import android.telephony.TelephonyManager; /** * IccSmsInterfaceManager to provide an inter-process communication to * access Sms in Icc. Loading Loading @@ -399,12 +399,13 @@ public class IccSmsInterfaceManager { * 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) { String text, PendingIntent sentIntent, PendingIntent deliveryIntent, boolean persistMessage) { mPhone.getContext().enforceCallingOrSelfPermission( Manifest.permission.SEND_SMS, "Sending SMS message"); sendTextInternal(callingPackage, destAddr, scAddr, text, sentIntent, deliveryIntent, true /* persistMessageForNonDefaultSmsApp */); persistMessage); } /** Loading Loading @@ -445,8 +446,8 @@ public class IccSmsInterfaceManager { return; } if (!persistMessageForNonDefaultSmsApp) { // Only allow carrier app to skip auto message persistence. enforceCarrierPrivilege(); // Only allow carrier app or phone process to skip auto message persistence. enforceCarrierOrPhonePrivilege(); } destAddr = filterDestAddress(destAddr); mDispatcher.sendText(destAddr, scAddr, text, sentIntent, deliveryIntent, Loading Loading @@ -1114,6 +1115,13 @@ public class IccSmsInterfaceManager { } } private void enforceCarrierOrPhonePrivilege() { int callingUid = Binder.getCallingUid(); if (callingUid != Process.PHONE_UID) { enforceCarrierPrivilege(); } } private String filterDestAddress(String destAddr) { String result = null; result = SmsNumberUtils.filterDestAddr(mPhone, destAddr); Loading
src/java/com/android/internal/telephony/UiccSmsController.java +2 −2 Original line number Diff line number Diff line Loading @@ -144,11 +144,11 @@ public class UiccSmsController extends ISms.Stub { public void sendTextForSubscriberWithSelfPermissions(int subId, String callingPackage, String destAddr, String scAddr, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { PendingIntent deliveryIntent, boolean persistMessage) { IccSmsInterfaceManager iccSmsIntMgr = getIccSmsInterfaceManager(subId); if (iccSmsIntMgr != null) { iccSmsIntMgr.sendTextWithSelfPermissions(callingPackage, destAddr, scAddr, text, sentIntent, deliveryIntent); sentIntent, deliveryIntent, persistMessage); } else { Rlog.e(LOG_TAG,"sendText iccSmsIntMgr is null for" + " Subscription: " + subId); Loading