Loading src/java/com/android/internal/telephony/CarrierServicesSmsFilter.java +12 −8 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ import android.os.Handler; import android.os.Message; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingServiceWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback; import android.service.carrier.MessagePdu; import android.util.LocalLog; Loading Loading @@ -161,7 +161,8 @@ public class CarrierServicesSmsFilter { CarrierSmsFilter smsFilter = new CarrierSmsFilter(mPdus, mDestPort, mPduFormat, packageName); CarrierSmsFilterCallback smsFilterCallback = new CarrierSmsFilterCallback(filterAggregator, smsFilter, packageName); new CarrierSmsFilterCallback(filterAggregator, smsFilter.mCarrierMessagingServiceWrapper, packageName); filterAggregator.addToCallbacks(smsFilterCallback); smsFilter.filterSms(smsFilterCallback); Loading Loading @@ -213,13 +214,15 @@ public class CarrierServicesSmsFilter { * instructed to do so by the carrier messaging service. A new instance must be used for every * message. */ private final class CarrierSmsFilter extends CarrierMessagingServiceWrapper { private final class CarrierSmsFilter { private final byte[][] mPdus; private final int mDestPort; private final String mSmsFormat; // Instantiated in filterSms. private volatile CarrierSmsFilterCallback mSmsFilterCallback; private final String mPackageName; protected final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); CarrierSmsFilter(byte[][] pdus, int destPort, String smsFormat, String packageName) { mPdus = pdus; Loading @@ -234,7 +237,8 @@ public class CarrierServicesSmsFilter { */ void filterSms(CarrierSmsFilterCallback smsFilterCallback) { mSmsFilterCallback = smsFilterCallback; if (!bindToCarrierMessagingService(mContext, mPackageName)) { if (!mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, mPackageName, ()-> onServiceReady())) { loge("CarrierSmsFilter::filterSms: bindService() for failed for " + mPackageName); smsFilterCallback.onFilterComplete(CarrierMessagingService.RECEIVE_OPTIONS_DEFAULT); } else { Loading @@ -247,11 +251,11 @@ public class CarrierServicesSmsFilter { * Invokes the {@code carrierMessagingService} to filter messages. The filtering result is * delivered to {@code smsFilterCallback}. */ @Override public void onServiceReady() { private void onServiceReady() { try { log("onServiceReady: calling filterSms on " + mPackageName); filterSms(new MessagePdu(Arrays.asList(mPdus)), mSmsFormat, mDestPort, mCarrierMessagingServiceWrapper.filterSms( new MessagePdu(Arrays.asList(mPdus)), mSmsFormat, mDestPort, mPhone.getSubId(), mSmsFilterCallback); } catch (RuntimeException e) { loge("Exception filtering the SMS with " + mPackageName + ": " + e); Loading @@ -265,7 +269,7 @@ public class CarrierServicesSmsFilter { * A callback used to notify the platform of the carrier messaging app filtering result. Once * the result is ready, the carrier messaging service connection is disposed. */ private final class CarrierSmsFilterCallback extends CarrierMessagingCallbackWrapper { private final class CarrierSmsFilterCallback implements CarrierMessagingCallback { private final FilterAggregator mFilterAggregator; private final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper; private boolean mIsOnFilterCompleteCalled; Loading src/java/com/android/internal/telephony/SMSDispatcher.java +21 −15 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ import android.provider.Telephony; import android.provider.Telephony.Sms; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingServiceWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback; import android.telephony.CarrierConfigManager; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; Loading Loading @@ -351,10 +351,12 @@ public abstract class SMSDispatcher extends Handler { /** * Use the carrier messaging service to send a data or text SMS. */ protected abstract class SmsSender extends CarrierMessagingServiceWrapper { protected abstract class SmsSender { protected final SmsTracker mTracker; // Initialized in sendSmsByCarrierApp protected volatile SmsSenderCallback mSenderCallback; protected final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); protected SmsSender(SmsTracker tracker) { mTracker = tracker; Loading @@ -363,7 +365,8 @@ public abstract class SMSDispatcher extends Handler { public void sendSmsByCarrierApp(String carrierPackageName, SmsSenderCallback senderCallback) { mSenderCallback = senderCallback; if (!bindToCarrierMessagingService(mContext, carrierPackageName)) { if (mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, carrierPackageName, ()->onServiceReady())) { Rlog.e(TAG, "bindService() for carrier messaging service failed"); mSenderCallback.onSendSmsComplete( CarrierMessagingService.SEND_STATUS_RETRY_ON_CARRIER_NETWORK, Loading @@ -372,6 +375,8 @@ public abstract class SMSDispatcher extends Handler { Rlog.d(TAG, "bindService() for carrier messaging service succeeded"); } } public abstract void onServiceReady(); } /** Loading @@ -389,7 +394,7 @@ public abstract class SMSDispatcher extends Handler { if (text != null) { try { sendTextSms( mCarrierMessagingServiceWrapper.sendTextSms( text, getSubId(), mTracker.mDestAddress, Loading Loading @@ -427,7 +432,7 @@ public abstract class SMSDispatcher extends Handler { if (data != null) { try { sendDataSms( mCarrierMessagingServiceWrapper.sendDataSms( data, getSubId(), mTracker.mDestAddress, Loading Loading @@ -455,8 +460,7 @@ public abstract class SMSDispatcher extends Handler { * Callback for TextSmsSender and DataSmsSender from the carrier messaging service. * Once the result is ready, the carrier messaging service connection is disposed. */ protected final class SmsSenderCallback extends CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper { protected final class SmsSenderCallback implements CarrierMessagingCallback { private final SmsSender mSmsSender; public SmsSenderCallback(SmsSender smsSender) { Loading @@ -471,7 +475,7 @@ public abstract class SMSDispatcher extends Handler { checkCallerIsPhoneOrCarrierApp(); final long identity = Binder.clearCallingIdentity(); try { mSmsSender.disposeConnection(mContext); mSmsSender.mCarrierMessagingServiceWrapper.disposeConnection(mContext); processSendSmsResponse(mSmsSender.mTracker, result, messageRef); } finally { Binder.restoreCallingIdentity(identity); Loading Loading @@ -540,11 +544,13 @@ public abstract class SMSDispatcher extends Handler { /** * Use the carrier messaging service to send a multipart text SMS. */ private final class MultipartSmsSender extends CarrierMessagingServiceWrapper { private final class MultipartSmsSender { private final List<String> mParts; public final SmsTracker[] mTrackers; // Initialized in sendSmsByCarrierApp private volatile MultipartSmsSenderCallback mSenderCallback; private final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); MultipartSmsSender(ArrayList<String> parts, SmsTracker[] trackers) { mParts = parts; Loading @@ -555,7 +561,8 @@ public abstract class SMSDispatcher extends Handler { void sendSmsByCarrierApp(String carrierPackageName, MultipartSmsSenderCallback senderCallback) { mSenderCallback = senderCallback; if (!bindToCarrierMessagingService(mContext, carrierPackageName)) { if (mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, carrierPackageName, ()->onServiceReady())) { Rlog.e(TAG, "bindService() for carrier messaging service failed"); mSenderCallback.onSendMultipartSmsComplete( CarrierMessagingService.SEND_STATUS_RETRY_ON_CARRIER_NETWORK, Loading @@ -565,8 +572,7 @@ public abstract class SMSDispatcher extends Handler { } } @Override public void onServiceReady() { private void onServiceReady() { boolean statusReportRequested = false; for (SmsTracker tracker : mTrackers) { if (tracker.mDeliveryIntent != null) { Loading @@ -576,7 +582,7 @@ public abstract class SMSDispatcher extends Handler { } try { sendMultipartTextSms( mCarrierMessagingServiceWrapper.sendMultipartTextSms( mParts, getSubId(), mTrackers[0].mDestAddress, Loading @@ -597,7 +603,7 @@ public abstract class SMSDispatcher extends Handler { * Callback for MultipartSmsSender from the carrier messaging service. * Once the result is ready, the carrier messaging service connection is disposed. */ private final class MultipartSmsSenderCallback extends CarrierMessagingCallbackWrapper { private final class MultipartSmsSenderCallback implements CarrierMessagingCallback { private final MultipartSmsSender mSmsSender; MultipartSmsSenderCallback(MultipartSmsSender smsSender) { Loading @@ -614,7 +620,7 @@ public abstract class SMSDispatcher extends Handler { */ @Override public void onSendMultipartSmsComplete(int result, int[] messageRefs) { mSmsSender.disposeConnection(mContext); mSmsSender.mCarrierMessagingServiceWrapper.disposeConnection(mContext); if (mSmsSender.mTrackers == null) { Rlog.e(TAG, "Unexpected onSendMultipartSmsComplete call with null trackers."); Loading Loading
src/java/com/android/internal/telephony/CarrierServicesSmsFilter.java +12 −8 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ import android.os.Handler; import android.os.Message; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingServiceWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback; import android.service.carrier.MessagePdu; import android.util.LocalLog; Loading Loading @@ -161,7 +161,8 @@ public class CarrierServicesSmsFilter { CarrierSmsFilter smsFilter = new CarrierSmsFilter(mPdus, mDestPort, mPduFormat, packageName); CarrierSmsFilterCallback smsFilterCallback = new CarrierSmsFilterCallback(filterAggregator, smsFilter, packageName); new CarrierSmsFilterCallback(filterAggregator, smsFilter.mCarrierMessagingServiceWrapper, packageName); filterAggregator.addToCallbacks(smsFilterCallback); smsFilter.filterSms(smsFilterCallback); Loading Loading @@ -213,13 +214,15 @@ public class CarrierServicesSmsFilter { * instructed to do so by the carrier messaging service. A new instance must be used for every * message. */ private final class CarrierSmsFilter extends CarrierMessagingServiceWrapper { private final class CarrierSmsFilter { private final byte[][] mPdus; private final int mDestPort; private final String mSmsFormat; // Instantiated in filterSms. private volatile CarrierSmsFilterCallback mSmsFilterCallback; private final String mPackageName; protected final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); CarrierSmsFilter(byte[][] pdus, int destPort, String smsFormat, String packageName) { mPdus = pdus; Loading @@ -234,7 +237,8 @@ public class CarrierServicesSmsFilter { */ void filterSms(CarrierSmsFilterCallback smsFilterCallback) { mSmsFilterCallback = smsFilterCallback; if (!bindToCarrierMessagingService(mContext, mPackageName)) { if (!mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, mPackageName, ()-> onServiceReady())) { loge("CarrierSmsFilter::filterSms: bindService() for failed for " + mPackageName); smsFilterCallback.onFilterComplete(CarrierMessagingService.RECEIVE_OPTIONS_DEFAULT); } else { Loading @@ -247,11 +251,11 @@ public class CarrierServicesSmsFilter { * Invokes the {@code carrierMessagingService} to filter messages. The filtering result is * delivered to {@code smsFilterCallback}. */ @Override public void onServiceReady() { private void onServiceReady() { try { log("onServiceReady: calling filterSms on " + mPackageName); filterSms(new MessagePdu(Arrays.asList(mPdus)), mSmsFormat, mDestPort, mCarrierMessagingServiceWrapper.filterSms( new MessagePdu(Arrays.asList(mPdus)), mSmsFormat, mDestPort, mPhone.getSubId(), mSmsFilterCallback); } catch (RuntimeException e) { loge("Exception filtering the SMS with " + mPackageName + ": " + e); Loading @@ -265,7 +269,7 @@ public class CarrierServicesSmsFilter { * A callback used to notify the platform of the carrier messaging app filtering result. Once * the result is ready, the carrier messaging service connection is disposed. */ private final class CarrierSmsFilterCallback extends CarrierMessagingCallbackWrapper { private final class CarrierSmsFilterCallback implements CarrierMessagingCallback { private final FilterAggregator mFilterAggregator; private final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper; private boolean mIsOnFilterCompleteCalled; Loading
src/java/com/android/internal/telephony/SMSDispatcher.java +21 −15 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ import android.provider.Telephony; import android.provider.Telephony.Sms; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingServiceWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper; import android.service.carrier.CarrierMessagingServiceWrapper.CarrierMessagingCallback; import android.telephony.CarrierConfigManager; import android.telephony.PhoneNumberUtils; import android.telephony.ServiceState; Loading Loading @@ -351,10 +351,12 @@ public abstract class SMSDispatcher extends Handler { /** * Use the carrier messaging service to send a data or text SMS. */ protected abstract class SmsSender extends CarrierMessagingServiceWrapper { protected abstract class SmsSender { protected final SmsTracker mTracker; // Initialized in sendSmsByCarrierApp protected volatile SmsSenderCallback mSenderCallback; protected final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); protected SmsSender(SmsTracker tracker) { mTracker = tracker; Loading @@ -363,7 +365,8 @@ public abstract class SMSDispatcher extends Handler { public void sendSmsByCarrierApp(String carrierPackageName, SmsSenderCallback senderCallback) { mSenderCallback = senderCallback; if (!bindToCarrierMessagingService(mContext, carrierPackageName)) { if (mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, carrierPackageName, ()->onServiceReady())) { Rlog.e(TAG, "bindService() for carrier messaging service failed"); mSenderCallback.onSendSmsComplete( CarrierMessagingService.SEND_STATUS_RETRY_ON_CARRIER_NETWORK, Loading @@ -372,6 +375,8 @@ public abstract class SMSDispatcher extends Handler { Rlog.d(TAG, "bindService() for carrier messaging service succeeded"); } } public abstract void onServiceReady(); } /** Loading @@ -389,7 +394,7 @@ public abstract class SMSDispatcher extends Handler { if (text != null) { try { sendTextSms( mCarrierMessagingServiceWrapper.sendTextSms( text, getSubId(), mTracker.mDestAddress, Loading Loading @@ -427,7 +432,7 @@ public abstract class SMSDispatcher extends Handler { if (data != null) { try { sendDataSms( mCarrierMessagingServiceWrapper.sendDataSms( data, getSubId(), mTracker.mDestAddress, Loading Loading @@ -455,8 +460,7 @@ public abstract class SMSDispatcher extends Handler { * Callback for TextSmsSender and DataSmsSender from the carrier messaging service. * Once the result is ready, the carrier messaging service connection is disposed. */ protected final class SmsSenderCallback extends CarrierMessagingServiceWrapper.CarrierMessagingCallbackWrapper { protected final class SmsSenderCallback implements CarrierMessagingCallback { private final SmsSender mSmsSender; public SmsSenderCallback(SmsSender smsSender) { Loading @@ -471,7 +475,7 @@ public abstract class SMSDispatcher extends Handler { checkCallerIsPhoneOrCarrierApp(); final long identity = Binder.clearCallingIdentity(); try { mSmsSender.disposeConnection(mContext); mSmsSender.mCarrierMessagingServiceWrapper.disposeConnection(mContext); processSendSmsResponse(mSmsSender.mTracker, result, messageRef); } finally { Binder.restoreCallingIdentity(identity); Loading Loading @@ -540,11 +544,13 @@ public abstract class SMSDispatcher extends Handler { /** * Use the carrier messaging service to send a multipart text SMS. */ private final class MultipartSmsSender extends CarrierMessagingServiceWrapper { private final class MultipartSmsSender { private final List<String> mParts; public final SmsTracker[] mTrackers; // Initialized in sendSmsByCarrierApp private volatile MultipartSmsSenderCallback mSenderCallback; private final CarrierMessagingServiceWrapper mCarrierMessagingServiceWrapper = new CarrierMessagingServiceWrapper(); MultipartSmsSender(ArrayList<String> parts, SmsTracker[] trackers) { mParts = parts; Loading @@ -555,7 +561,8 @@ public abstract class SMSDispatcher extends Handler { void sendSmsByCarrierApp(String carrierPackageName, MultipartSmsSenderCallback senderCallback) { mSenderCallback = senderCallback; if (!bindToCarrierMessagingService(mContext, carrierPackageName)) { if (mCarrierMessagingServiceWrapper.bindToCarrierMessagingService( mContext, carrierPackageName, ()->onServiceReady())) { Rlog.e(TAG, "bindService() for carrier messaging service failed"); mSenderCallback.onSendMultipartSmsComplete( CarrierMessagingService.SEND_STATUS_RETRY_ON_CARRIER_NETWORK, Loading @@ -565,8 +572,7 @@ public abstract class SMSDispatcher extends Handler { } } @Override public void onServiceReady() { private void onServiceReady() { boolean statusReportRequested = false; for (SmsTracker tracker : mTrackers) { if (tracker.mDeliveryIntent != null) { Loading @@ -576,7 +582,7 @@ public abstract class SMSDispatcher extends Handler { } try { sendMultipartTextSms( mCarrierMessagingServiceWrapper.sendMultipartTextSms( mParts, getSubId(), mTrackers[0].mDestAddress, Loading @@ -597,7 +603,7 @@ public abstract class SMSDispatcher extends Handler { * Callback for MultipartSmsSender from the carrier messaging service. * Once the result is ready, the carrier messaging service connection is disposed. */ private final class MultipartSmsSenderCallback extends CarrierMessagingCallbackWrapper { private final class MultipartSmsSenderCallback implements CarrierMessagingCallback { private final MultipartSmsSender mSmsSender; MultipartSmsSenderCallback(MultipartSmsSender smsSender) { Loading @@ -614,7 +620,7 @@ public abstract class SMSDispatcher extends Handler { */ @Override public void onSendMultipartSmsComplete(int result, int[] messageRefs) { mSmsSender.disposeConnection(mContext); mSmsSender.mCarrierMessagingServiceWrapper.disposeConnection(mContext); if (mSmsSender.mTrackers == null) { Rlog.e(TAG, "Unexpected onSendMultipartSmsComplete call with null trackers."); Loading