Loading src/java/com/android/internal/telephony/SMSDispatcher.java +16 −63 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading @@ -29,21 +28,18 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.Resources; import android.content.ServiceConnection; import android.database.ContentObserver; import android.database.sqlite.SqliteWrapper; import android.net.Uri; import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.SystemProperties; import android.provider.Settings; import android.provider.Telephony; import android.provider.Telephony.Sms; import android.provider.Telephony.Sms.Intents; import android.service.carrier.CarrierMessagingService; import android.service.carrier.ICarrierMessagingCallback; import android.service.carrier.ICarrierMessagingService; Loading Loading @@ -71,7 +67,6 @@ import com.android.internal.telephony.uicc.UiccCard; import com.android.internal.telephony.uicc.UiccController; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Random; Loading Loading @@ -1291,10 +1286,14 @@ public abstract class SMSDispatcher extends Handler { private int mSubId; // If this is a text message (instead of data message) private boolean mIsText; private SmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, PackageInfo appInfo, String destAddr, String format, AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri, SmsHeader smsHeader, boolean isExpectMore, String fullMessageText, int subId) { SmsHeader smsHeader, boolean isExpectMore, String fullMessageText, int subId, boolean isText) { mData = data; mSentIntent = sentIntent; mDeliveryIntent = deliveryIntent; Loading @@ -1311,6 +1310,7 @@ public abstract class SMSDispatcher extends Handler { mSmsHeader = smsHeader; mFullMessageText = fullMessageText; mSubId = subId; mIsText = isText; } /** Loading Loading @@ -1360,7 +1360,10 @@ public abstract class SMSDispatcher extends Handler { } /** * Persist a sent SMS if required * Persist a sent SMS if required: * 1. It is a text message * 2. SmsApplication tells us to persist: sent from apps that are not default-SMS app or * bluetooth * * @param context * @param messageType The folder to store (FAILED or SENT) Loading @@ -1368,7 +1371,8 @@ public abstract class SMSDispatcher extends Handler { * @return The telephony provider URI if stored */ private Uri persistSentMessageIfRequired(Context context, int messageType, int errorCode) { if (!SmsApplication.shouldWriteMessageForPackage(mAppInfo.packageName, context)) { if (!mIsText || !SmsApplication.shouldWriteMessageForPackage(mAppInfo.packageName, context)) { return null; } Rlog.d(TAG, "Persist SMS into " Loading Loading @@ -1510,7 +1514,7 @@ public abstract class SMSDispatcher extends Handler { protected SmsTracker getSmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, String format, AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri, SmsHeader smsHeader, boolean isExpectMore, String fullMessageText) { boolean isExpectMore, String fullMessageText, boolean isText) { // Get calling app package name via UID from Binder call PackageManager pm = mContext.getPackageManager(); String[] packageNames = pm.getPackagesForUid(Binder.getCallingUid()); Loading @@ -1530,15 +1534,15 @@ public abstract class SMSDispatcher extends Handler { String destAddr = PhoneNumberUtils.extractNetworkPortion((String) data.get("destAddr")); return new SmsTracker(data, sentIntent, deliveryIntent, appInfo, destAddr, format, unsentPartCount, anyPartFailed, messageUri, smsHeader, isExpectMore, fullMessageText, getSubId()); fullMessageText, getSubId(), isText); } protected SmsTracker getSmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, String format, Uri messageUri, boolean isExpectMore, String fullMessageText) { String fullMessageText, boolean isText) { return getSmsTracker(data, sentIntent, deliveryIntent, format, null/*unsentPartCount*/, null/*anyPartFailed*/, messageUri, null/*smsHeader*/, isExpectMore, fullMessageText); fullMessageText, isText); } protected HashMap<String, Object> getSmsTrackerMap(String destAddr, String scAddr, Loading Loading @@ -1667,57 +1671,6 @@ public abstract class SMSDispatcher extends Handler { } } protected Uri writeOutboxMessage(int subId, String address, String text, boolean requireDeliveryReport, String creator) { final ContentValues values = new ContentValues(8); values.put(Telephony.Sms.SUBSCRIPTION_ID, subId); values.put(Telephony.Sms.ADDRESS, address); values.put(Telephony.Sms.BODY, text); values.put(Telephony.Sms.DATE, System.currentTimeMillis()); // milliseconds values.put(Telephony.Sms.SEEN, 1); values.put(Telephony.Sms.READ, 1); if (!TextUtils.isEmpty(creator)) { values.put(Telephony.Sms.CREATOR, creator); } if (requireDeliveryReport) { values.put(Telephony.Sms.STATUS, Telephony.Sms.STATUS_PENDING); } final long identity = Binder.clearCallingIdentity(); try { final Uri uri = mContext.getContentResolver().insert( Telephony.Sms.Outbox.CONTENT_URI, values); return uri; } catch (Exception e) { Rlog.e(TAG, "writeOutboxMessage: Failed to persist outbox message", e); return null; } finally { Binder.restoreCallingIdentity(identity); } } protected void moveToOutbox(int subId, Uri messageUri, String creator) { final ContentValues values = new ContentValues(4); values.put(Telephony.Sms.SUBSCRIPTION_ID, subId); if (!TextUtils.isEmpty(creator)) { // Reset creator/sender values.put(Telephony.Sms.CREATOR, creator); } // Reset the timestamp values.put(Telephony.Sms.DATE, System.currentTimeMillis()); // milliseconds values.put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_OUTBOX); final long identity = Binder.clearCallingIdentity(); try { if (mContext.getContentResolver().update(messageUri, values, null/*where*/, null/*selectionArgs*/) != 1) { Rlog.e(TAG, "moveToOutbox: failed to update message " + messageUri); } } catch (Exception e) { Rlog.e(TAG, "moveToOutbox: Failed to update message", e); } finally { Binder.restoreCallingIdentity(identity); } } private String getMultipartMessageText(ArrayList<String> parts) { final StringBuilder sb = new StringBuilder(); for (String part : parts) { Loading src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +4 −5 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.cdma; import android.app.Activity; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Intent; Loading @@ -25,7 +24,6 @@ import android.net.Uri; import android.os.Message; import android.os.SystemProperties; import android.provider.Telephony.Sms; import android.provider.Telephony.Sms.Intents; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.SmsManager; Loading Loading @@ -113,7 +111,8 @@ public class CdmaSMSDispatcher extends SMSDispatcher { scAddr, destAddr, destPort, data, (deliveryIntent != null)); HashMap map = getSmsTrackerMap(destAddr, scAddr, destPort, data, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/); null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/, false /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading @@ -135,7 +134,7 @@ public class CdmaSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, text, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), messageUri, false /*isExpectMore*/, text); messageUri, false /*isExpectMore*/, text, true /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading Loading @@ -192,7 +191,7 @@ public class CdmaSMSDispatcher extends SMSDispatcher { message, submitPdu); return getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), unsentPartCount, anyPartFailed, messageUri, smsHeader, false /*isExpextMore*/, fullMessageText); false /*isExpextMore*/, fullMessageText, true /*isText*/); } @Override Loading src/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +4 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.gsm; import android.app.Activity; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Intent; Loading Loading @@ -157,7 +156,8 @@ public final class GsmSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, destPort, data, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/); null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/, false /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading @@ -182,7 +182,7 @@ public final class GsmSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, text, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), messageUri, false /*isExpectMore*/, text /*fullMessageText*/); messageUri, false /*isExpectMore*/, text /*fullMessageText*/, true /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading Loading @@ -226,7 +226,7 @@ public final class GsmSMSDispatcher extends SMSDispatcher { message, pdu); return getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), unsentPartCount, anyPartFailed, messageUri, smsHeader, !lastPart, fullMessageText); smsHeader, !lastPart, fullMessageText, true /*isText*/); } else { Rlog.e(TAG, "GsmSMSDispatcher.sendNewSubmitPdu(): getSubmitPdu() returned null"); return null; Loading Loading
src/java/com/android/internal/telephony/SMSDispatcher.java +16 −63 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; Loading @@ -29,21 +28,18 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.res.Resources; import android.content.ServiceConnection; import android.database.ContentObserver; import android.database.sqlite.SqliteWrapper; import android.net.Uri; import android.os.AsyncResult; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.os.SystemProperties; import android.provider.Settings; import android.provider.Telephony; import android.provider.Telephony.Sms; import android.provider.Telephony.Sms.Intents; import android.service.carrier.CarrierMessagingService; import android.service.carrier.ICarrierMessagingCallback; import android.service.carrier.ICarrierMessagingService; Loading Loading @@ -71,7 +67,6 @@ import com.android.internal.telephony.uicc.UiccCard; import com.android.internal.telephony.uicc.UiccController; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Random; Loading Loading @@ -1291,10 +1286,14 @@ public abstract class SMSDispatcher extends Handler { private int mSubId; // If this is a text message (instead of data message) private boolean mIsText; private SmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, PackageInfo appInfo, String destAddr, String format, AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri, SmsHeader smsHeader, boolean isExpectMore, String fullMessageText, int subId) { SmsHeader smsHeader, boolean isExpectMore, String fullMessageText, int subId, boolean isText) { mData = data; mSentIntent = sentIntent; mDeliveryIntent = deliveryIntent; Loading @@ -1311,6 +1310,7 @@ public abstract class SMSDispatcher extends Handler { mSmsHeader = smsHeader; mFullMessageText = fullMessageText; mSubId = subId; mIsText = isText; } /** Loading Loading @@ -1360,7 +1360,10 @@ public abstract class SMSDispatcher extends Handler { } /** * Persist a sent SMS if required * Persist a sent SMS if required: * 1. It is a text message * 2. SmsApplication tells us to persist: sent from apps that are not default-SMS app or * bluetooth * * @param context * @param messageType The folder to store (FAILED or SENT) Loading @@ -1368,7 +1371,8 @@ public abstract class SMSDispatcher extends Handler { * @return The telephony provider URI if stored */ private Uri persistSentMessageIfRequired(Context context, int messageType, int errorCode) { if (!SmsApplication.shouldWriteMessageForPackage(mAppInfo.packageName, context)) { if (!mIsText || !SmsApplication.shouldWriteMessageForPackage(mAppInfo.packageName, context)) { return null; } Rlog.d(TAG, "Persist SMS into " Loading Loading @@ -1510,7 +1514,7 @@ public abstract class SMSDispatcher extends Handler { protected SmsTracker getSmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, String format, AtomicInteger unsentPartCount, AtomicBoolean anyPartFailed, Uri messageUri, SmsHeader smsHeader, boolean isExpectMore, String fullMessageText) { boolean isExpectMore, String fullMessageText, boolean isText) { // Get calling app package name via UID from Binder call PackageManager pm = mContext.getPackageManager(); String[] packageNames = pm.getPackagesForUid(Binder.getCallingUid()); Loading @@ -1530,15 +1534,15 @@ public abstract class SMSDispatcher extends Handler { String destAddr = PhoneNumberUtils.extractNetworkPortion((String) data.get("destAddr")); return new SmsTracker(data, sentIntent, deliveryIntent, appInfo, destAddr, format, unsentPartCount, anyPartFailed, messageUri, smsHeader, isExpectMore, fullMessageText, getSubId()); fullMessageText, getSubId(), isText); } protected SmsTracker getSmsTracker(HashMap<String, Object> data, PendingIntent sentIntent, PendingIntent deliveryIntent, String format, Uri messageUri, boolean isExpectMore, String fullMessageText) { String fullMessageText, boolean isText) { return getSmsTracker(data, sentIntent, deliveryIntent, format, null/*unsentPartCount*/, null/*anyPartFailed*/, messageUri, null/*smsHeader*/, isExpectMore, fullMessageText); fullMessageText, isText); } protected HashMap<String, Object> getSmsTrackerMap(String destAddr, String scAddr, Loading Loading @@ -1667,57 +1671,6 @@ public abstract class SMSDispatcher extends Handler { } } protected Uri writeOutboxMessage(int subId, String address, String text, boolean requireDeliveryReport, String creator) { final ContentValues values = new ContentValues(8); values.put(Telephony.Sms.SUBSCRIPTION_ID, subId); values.put(Telephony.Sms.ADDRESS, address); values.put(Telephony.Sms.BODY, text); values.put(Telephony.Sms.DATE, System.currentTimeMillis()); // milliseconds values.put(Telephony.Sms.SEEN, 1); values.put(Telephony.Sms.READ, 1); if (!TextUtils.isEmpty(creator)) { values.put(Telephony.Sms.CREATOR, creator); } if (requireDeliveryReport) { values.put(Telephony.Sms.STATUS, Telephony.Sms.STATUS_PENDING); } final long identity = Binder.clearCallingIdentity(); try { final Uri uri = mContext.getContentResolver().insert( Telephony.Sms.Outbox.CONTENT_URI, values); return uri; } catch (Exception e) { Rlog.e(TAG, "writeOutboxMessage: Failed to persist outbox message", e); return null; } finally { Binder.restoreCallingIdentity(identity); } } protected void moveToOutbox(int subId, Uri messageUri, String creator) { final ContentValues values = new ContentValues(4); values.put(Telephony.Sms.SUBSCRIPTION_ID, subId); if (!TextUtils.isEmpty(creator)) { // Reset creator/sender values.put(Telephony.Sms.CREATOR, creator); } // Reset the timestamp values.put(Telephony.Sms.DATE, System.currentTimeMillis()); // milliseconds values.put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_OUTBOX); final long identity = Binder.clearCallingIdentity(); try { if (mContext.getContentResolver().update(messageUri, values, null/*where*/, null/*selectionArgs*/) != 1) { Rlog.e(TAG, "moveToOutbox: failed to update message " + messageUri); } } catch (Exception e) { Rlog.e(TAG, "moveToOutbox: Failed to update message", e); } finally { Binder.restoreCallingIdentity(identity); } } private String getMultipartMessageText(ArrayList<String> parts) { final StringBuilder sb = new StringBuilder(); for (String part : parts) { Loading
src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +4 −5 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.cdma; import android.app.Activity; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Intent; Loading @@ -25,7 +24,6 @@ import android.net.Uri; import android.os.Message; import android.os.SystemProperties; import android.provider.Telephony.Sms; import android.provider.Telephony.Sms.Intents; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.SmsManager; Loading Loading @@ -113,7 +111,8 @@ public class CdmaSMSDispatcher extends SMSDispatcher { scAddr, destAddr, destPort, data, (deliveryIntent != null)); HashMap map = getSmsTrackerMap(destAddr, scAddr, destPort, data, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/); null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/, false /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading @@ -135,7 +134,7 @@ public class CdmaSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, text, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), messageUri, false /*isExpectMore*/, text); messageUri, false /*isExpectMore*/, text, true /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading Loading @@ -192,7 +191,7 @@ public class CdmaSMSDispatcher extends SMSDispatcher { message, submitPdu); return getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), unsentPartCount, anyPartFailed, messageUri, smsHeader, false /*isExpextMore*/, fullMessageText); false /*isExpextMore*/, fullMessageText, true /*isText*/); } @Override Loading
src/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +4 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.internal.telephony.gsm; import android.app.Activity; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; import android.content.Intent; Loading Loading @@ -157,7 +156,8 @@ public final class GsmSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, destPort, data, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/); null /*messageUri*/, false /*isExpectMore*/, null /*fullMessageText*/, false /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading @@ -182,7 +182,7 @@ public final class GsmSMSDispatcher extends SMSDispatcher { if (pdu != null) { HashMap map = getSmsTrackerMap(destAddr, scAddr, text, pdu); SmsTracker tracker = getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), messageUri, false /*isExpectMore*/, text /*fullMessageText*/); messageUri, false /*isExpectMore*/, text /*fullMessageText*/, true /*isText*/); String carrierPackage = getCarrierAppPackageName(); if (carrierPackage != null) { Loading Loading @@ -226,7 +226,7 @@ public final class GsmSMSDispatcher extends SMSDispatcher { message, pdu); return getSmsTracker(map, sentIntent, deliveryIntent, getFormat(), unsentPartCount, anyPartFailed, messageUri, smsHeader, !lastPart, fullMessageText); smsHeader, !lastPart, fullMessageText, true /*isText*/); } else { Rlog.e(TAG, "GsmSMSDispatcher.sendNewSubmitPdu(): getSubmitPdu() returned null"); return null; Loading