Loading src/java/com/android/internal/telephony/InboundSmsHandler.java +42 −11 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AppOpsManager; import android.app.BroadcastOptions; Loading Loading @@ -73,6 +74,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.SmsConstants.MessageClass; import com.android.internal.telephony.analytics.TelephonyAnalytics; import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteSessionStats; import com.android.internal.telephony.util.NotificationChannelController; Loading Loading @@ -284,6 +286,8 @@ public abstract class InboundSmsHandler extends StateMachine { private List<SmsFilter> mSmsFilters; protected final @NonNull FeatureFlags mFeatureFlags; /** * Create a new SMS broadcast helper. * @param name the class name for logging Loading @@ -291,14 +295,15 @@ public abstract class InboundSmsHandler extends StateMachine { * @param storageMonitor the SmsStorageMonitor to check for storage availability */ protected InboundSmsHandler(String name, Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { Phone phone, Looper looper, FeatureFlags featureFlags) { super(name, looper); mFeatureFlags = featureFlags; mContext = context; mStorageMonitor = storageMonitor; mPhone = phone; mResolver = context.getContentResolver(); mWapPush = new WapPushOverSms(context); mWapPush = new WapPushOverSms(context, mFeatureFlags); boolean smsCapable = mContext.getResources().getBoolean( com.android.internal.R.bool.config_sms_capable); Loading Loading @@ -1324,6 +1329,7 @@ public abstract class InboundSmsHandler extends StateMachine { * @param user user to deliver the intent to */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @SuppressLint("MissingPermission") public void dispatchIntent(Intent intent, String permission, String appOp, Bundle opts, SmsBroadcastReceiver resultReceiver, UserHandle user, int subId) { intent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT); Loading Loading @@ -1352,12 +1358,17 @@ public abstract class InboundSmsHandler extends StateMachine { // Get a list of currently started users. int[] users = null; final List<UserHandle> userHandles = mUserManager.getUserHandles(false); final UserHandle mainUser = mUserManager.getMainUser(); final List<UserHandle> runningUserHandles = new ArrayList(); for (UserHandle handle : userHandles) { if (mUserManager.isUserRunning(handle)) { runningUserHandles.add(handle); } else { if (handle.equals(UserHandle.SYSTEM)) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser() && handle.equals(mainUser)) { logeWithLocalLog("dispatchIntent: MAIN user is not running", resultReceiver.mInboundSmsTracker.getMessageId()); } else if (handle.equals(UserHandle.SYSTEM)) { logeWithLocalLog("dispatchIntent: SYSTEM user is not running", resultReceiver.mInboundSmsTracker.getMessageId()); } Loading @@ -1375,7 +1386,7 @@ public abstract class InboundSmsHandler extends StateMachine { // by user policy. for (int i = users.length - 1; i >= 0; i--) { UserHandle targetUser = UserHandle.of(users[i]); if (users[i] != UserHandle.SYSTEM.getIdentifier()) { if (!isMainUser(users[i])) { // Is the user not allowed to use SMS? if (hasUserRestriction(UserManager.DISALLOW_SMS, targetUser)) { continue; Loading @@ -1385,14 +1396,14 @@ public abstract class InboundSmsHandler extends StateMachine { continue; } } // Only pass in the resultReceiver when the user SYSTEM is processed. // Only pass in the resultReceiver when the MAIN user is processed. try { if (users[i] == UserHandle.SYSTEM.getIdentifier()) { if (isMainUser(users[i])) { resultReceiver.setWaitingForIntent(intent); } mContext.createPackageContextAsUser(mContext.getPackageName(), 0, targetUser) .sendOrderedBroadcast(intent, Activity.RESULT_OK, permission, appOp, users[i] == UserHandle.SYSTEM.getIdentifier() isMainUser(users[i]) ? resultReceiver : null, getHandler(), null /* initialData */, null /* initialExtras */, opts); } catch (PackageManager.NameNotFoundException ignored) { Loading @@ -1416,6 +1427,15 @@ public abstract class InboundSmsHandler extends StateMachine { return (sources != null && !sources.isEmpty()); } @SuppressLint("MissingPermission") private boolean isMainUser(int userId) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { return userId == mUserManager.getMainUser().getIdentifier(); } else { return userId == UserHandle.SYSTEM.getIdentifier(); } } /** * Helper for {@link SmsBroadcastUndelivered} to delete an old message in the raw table. */ Loading Loading @@ -1511,8 +1531,12 @@ public abstract class InboundSmsHandler extends StateMachine { } if (userHandle == null) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { userHandle = mUserManager.getMainUser(); } else { userHandle = UserHandle.SYSTEM; } } Bundle options = handleSmsWhitelisting(intent.getComponent(), isClass0); dispatchIntent(intent, android.Manifest.permission.RECEIVE_SMS, AppOpsManager.OPSTR_RECEIVE_SMS, options, resultReceiver, userHandle, subId); Loading Loading @@ -1739,6 +1763,7 @@ public abstract class InboundSmsHandler extends StateMachine { handleAction(intent, true); } @SuppressLint("MissingPermission") private synchronized void handleAction(@NonNull Intent intent, boolean onReceive) { String action = intent.getAction(); if (mWaitingForIntent == null || !mWaitingForIntent.getAction().equals(action)) { Loading Loading @@ -1795,9 +1820,15 @@ public abstract class InboundSmsHandler extends StateMachine { String mimeType = intent.getType(); setWaitingForIntent(intent); if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { dispatchIntent(intent, WapPushOverSms.getPermissionForType(mimeType), WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, UserHandle.SYSTEM, subId); WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, mUserManager.getMainUser(), subId); } else { dispatchIntent(intent, WapPushOverSms.getPermissionForType(mimeType), WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, UserHandle.SYSTEM, subId); } } else { // Now that the intents have been deleted we can clean up the PDU data. if (!Intents.DATA_SMS_RECEIVED_ACTION.equals(action) Loading src/java/com/android/internal/telephony/SmsDispatchersController.java +2 −2 Original line number Diff line number Diff line Loading @@ -381,9 +381,9 @@ public class SmsDispatchersController extends Handler { mImsSmsDispatcher = new ImsSmsDispatcher(phone, this, ImsManager::getConnector); mCdmaDispatcher = new CdmaSMSDispatcher(phone, this); mGsmInboundSmsHandler = GsmInboundSmsHandler.makeInboundSmsHandler(phone.getContext(), storageMonitor, phone, looper); storageMonitor, phone, looper, mFeatureFlags); mCdmaInboundSmsHandler = CdmaInboundSmsHandler.makeInboundSmsHandler(phone.getContext(), storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher, looper); storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher, looper, mFeatureFlags); mGsmDispatcher = new GsmSMSDispatcher(phone, this, mGsmInboundSmsHandler); SmsBroadcastUndelivered.initialize(phone.getContext(), mGsmInboundSmsHandler, mCdmaInboundSmsHandler); Loading src/java/com/android/internal/telephony/WapPushOverSms.java +17 −4 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.google.android.mms.pdu.PduHeaders.MESSAGE_TYPE_NOTIFICATION_IN import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AppOpsManager; import android.app.BroadcastOptions; Loading @@ -45,6 +46,7 @@ import android.telephony.SmsManager; import android.telephony.SubscriptionManager; import android.text.TextUtils; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.uicc.IccUtils; import com.android.internal.telephony.util.TelephonyUtils; import com.android.telephony.Rlog; Loading @@ -67,8 +69,14 @@ public class WapPushOverSms implements ServiceConnection { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private final Context mContext; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private UserManager mUserManager; PowerWhitelistManager mPowerWhitelistManager; protected final @NonNull FeatureFlags mFeatureFlags; private String mWapPushManagerPackage; /** Assigned from ServiceConnection callback on main threaad. */ Loading Loading @@ -128,11 +136,11 @@ public class WapPushOverSms implements ServiceConnection { if (DBG) Rlog.v(TAG, "wappush manager disconnected."); } public WapPushOverSms(Context context) { public WapPushOverSms(Context context, FeatureFlags featureFlags) { mFeatureFlags = featureFlags; mContext = context; mPowerWhitelistManager = mContext.getSystemService(PowerWhitelistManager.class); UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mUserManager = mContext.getSystemService(UserManager.class); bindWapPushManagerService(mContext); } Loading Loading @@ -325,6 +333,7 @@ public class WapPushOverSms implements ServiceConnection { * {@link Activity#RESULT_OK} if the message has been broadcast * to applications */ @SuppressLint("MissingPermission") public int dispatchWapPdu(byte[] pdu, InboundSmsHandler.SmsBroadcastReceiver receiver, InboundSmsHandler handler, String address, int subId, long messageId) { DecodedResult result = decodeWapPdu(pdu, handler); Loading Loading @@ -422,8 +431,12 @@ public class WapPushOverSms implements ServiceConnection { } if (userHandle == null) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { userHandle = mUserManager.getMainUser(); } else { userHandle = UserHandle.SYSTEM; } } handler.dispatchIntent(intent, getPermissionForType(result.mimeType), getAppOpsStringPermissionForIntent(result.mimeType), options, receiver, userHandle, subId); Loading src/java/com/android/internal/telephony/cdma/CdmaInboundSmsHandler.java +6 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.internal.telephony.WspTypeDecoder; import com.android.internal.telephony.cdma.sms.BearerData; import com.android.internal.telephony.cdma.sms.CdmaSmsAddress; import com.android.internal.telephony.cdma.sms.SmsEnvelope; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.util.HexDump; import java.io.ByteArrayOutputStream; Loading Loading @@ -78,8 +79,9 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { * Create a new inbound SMS handler for CDMA. */ private CdmaInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper) { super("CdmaInboundSmsHandler", context, storageMonitor, phone, looper); Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper, FeatureFlags featureFlags) { super("CdmaInboundSmsHandler", context, storageMonitor, phone, looper, featureFlags); mSmsDispatcher = smsDispatcher; phone.mCi.setOnNewCdmaSms(getHandler(), EVENT_NEW_SMS, null); Loading Loading @@ -171,9 +173,9 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { */ public static CdmaInboundSmsHandler makeInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper) { Looper looper, FeatureFlags featureFlags) { CdmaInboundSmsHandler handler = new CdmaInboundSmsHandler(context, storageMonitor, phone, smsDispatcher, looper); phone, smsDispatcher, looper, featureFlags); handler.start(); return handler; } Loading src/java/com/android/internal/telephony/gsm/GsmInboundSmsHandler.java +6 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.internal.telephony.SmsHeader; import com.android.internal.telephony.SmsMessageBase; import com.android.internal.telephony.SmsStorageMonitor; import com.android.internal.telephony.VisualVoicemailSmsFilter; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.uicc.UsimServiceTable; /** Loading @@ -58,8 +59,8 @@ public class GsmInboundSmsHandler extends InboundSmsHandler { * Create a new GSM inbound SMS handler. */ private GsmInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { super("GsmInboundSmsHandler", context, storageMonitor, phone, looper); Phone phone, Looper looper, FeatureFlags featureFlags) { super("GsmInboundSmsHandler", context, storageMonitor, phone, looper, featureFlags); phone.mCi.setOnNewGsmSms(getHandler(), EVENT_NEW_SMS, null); mDataDownloadHandler = new UsimDataDownloadHandler(phone.mCi, phone.getPhoneId()); mCellBroadcastServiceManager.enable(); Loading Loading @@ -129,9 +130,10 @@ public class GsmInboundSmsHandler extends InboundSmsHandler { * Wait for state machine to enter startup state. We can't send any messages until then. */ public static GsmInboundSmsHandler makeInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { SmsStorageMonitor storageMonitor, Phone phone, Looper looper, FeatureFlags featureFlags) { GsmInboundSmsHandler handler = new GsmInboundSmsHandler(context, storageMonitor, phone, looper); new GsmInboundSmsHandler(context, storageMonitor, phone, looper, featureFlags); handler.start(); return handler; } Loading Loading
src/java/com/android/internal/telephony/InboundSmsHandler.java +42 −11 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AppOpsManager; import android.app.BroadcastOptions; Loading Loading @@ -73,6 +74,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.SmsConstants.MessageClass; import com.android.internal.telephony.analytics.TelephonyAnalytics; import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.metrics.TelephonyMetrics; import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteSessionStats; import com.android.internal.telephony.util.NotificationChannelController; Loading Loading @@ -284,6 +286,8 @@ public abstract class InboundSmsHandler extends StateMachine { private List<SmsFilter> mSmsFilters; protected final @NonNull FeatureFlags mFeatureFlags; /** * Create a new SMS broadcast helper. * @param name the class name for logging Loading @@ -291,14 +295,15 @@ public abstract class InboundSmsHandler extends StateMachine { * @param storageMonitor the SmsStorageMonitor to check for storage availability */ protected InboundSmsHandler(String name, Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { Phone phone, Looper looper, FeatureFlags featureFlags) { super(name, looper); mFeatureFlags = featureFlags; mContext = context; mStorageMonitor = storageMonitor; mPhone = phone; mResolver = context.getContentResolver(); mWapPush = new WapPushOverSms(context); mWapPush = new WapPushOverSms(context, mFeatureFlags); boolean smsCapable = mContext.getResources().getBoolean( com.android.internal.R.bool.config_sms_capable); Loading Loading @@ -1324,6 +1329,7 @@ public abstract class InboundSmsHandler extends StateMachine { * @param user user to deliver the intent to */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @SuppressLint("MissingPermission") public void dispatchIntent(Intent intent, String permission, String appOp, Bundle opts, SmsBroadcastReceiver resultReceiver, UserHandle user, int subId) { intent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT); Loading Loading @@ -1352,12 +1358,17 @@ public abstract class InboundSmsHandler extends StateMachine { // Get a list of currently started users. int[] users = null; final List<UserHandle> userHandles = mUserManager.getUserHandles(false); final UserHandle mainUser = mUserManager.getMainUser(); final List<UserHandle> runningUserHandles = new ArrayList(); for (UserHandle handle : userHandles) { if (mUserManager.isUserRunning(handle)) { runningUserHandles.add(handle); } else { if (handle.equals(UserHandle.SYSTEM)) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser() && handle.equals(mainUser)) { logeWithLocalLog("dispatchIntent: MAIN user is not running", resultReceiver.mInboundSmsTracker.getMessageId()); } else if (handle.equals(UserHandle.SYSTEM)) { logeWithLocalLog("dispatchIntent: SYSTEM user is not running", resultReceiver.mInboundSmsTracker.getMessageId()); } Loading @@ -1375,7 +1386,7 @@ public abstract class InboundSmsHandler extends StateMachine { // by user policy. for (int i = users.length - 1; i >= 0; i--) { UserHandle targetUser = UserHandle.of(users[i]); if (users[i] != UserHandle.SYSTEM.getIdentifier()) { if (!isMainUser(users[i])) { // Is the user not allowed to use SMS? if (hasUserRestriction(UserManager.DISALLOW_SMS, targetUser)) { continue; Loading @@ -1385,14 +1396,14 @@ public abstract class InboundSmsHandler extends StateMachine { continue; } } // Only pass in the resultReceiver when the user SYSTEM is processed. // Only pass in the resultReceiver when the MAIN user is processed. try { if (users[i] == UserHandle.SYSTEM.getIdentifier()) { if (isMainUser(users[i])) { resultReceiver.setWaitingForIntent(intent); } mContext.createPackageContextAsUser(mContext.getPackageName(), 0, targetUser) .sendOrderedBroadcast(intent, Activity.RESULT_OK, permission, appOp, users[i] == UserHandle.SYSTEM.getIdentifier() isMainUser(users[i]) ? resultReceiver : null, getHandler(), null /* initialData */, null /* initialExtras */, opts); } catch (PackageManager.NameNotFoundException ignored) { Loading @@ -1416,6 +1427,15 @@ public abstract class InboundSmsHandler extends StateMachine { return (sources != null && !sources.isEmpty()); } @SuppressLint("MissingPermission") private boolean isMainUser(int userId) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { return userId == mUserManager.getMainUser().getIdentifier(); } else { return userId == UserHandle.SYSTEM.getIdentifier(); } } /** * Helper for {@link SmsBroadcastUndelivered} to delete an old message in the raw table. */ Loading Loading @@ -1511,8 +1531,12 @@ public abstract class InboundSmsHandler extends StateMachine { } if (userHandle == null) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { userHandle = mUserManager.getMainUser(); } else { userHandle = UserHandle.SYSTEM; } } Bundle options = handleSmsWhitelisting(intent.getComponent(), isClass0); dispatchIntent(intent, android.Manifest.permission.RECEIVE_SMS, AppOpsManager.OPSTR_RECEIVE_SMS, options, resultReceiver, userHandle, subId); Loading Loading @@ -1739,6 +1763,7 @@ public abstract class InboundSmsHandler extends StateMachine { handleAction(intent, true); } @SuppressLint("MissingPermission") private synchronized void handleAction(@NonNull Intent intent, boolean onReceive) { String action = intent.getAction(); if (mWaitingForIntent == null || !mWaitingForIntent.getAction().equals(action)) { Loading Loading @@ -1795,9 +1820,15 @@ public abstract class InboundSmsHandler extends StateMachine { String mimeType = intent.getType(); setWaitingForIntent(intent); if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { dispatchIntent(intent, WapPushOverSms.getPermissionForType(mimeType), WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, UserHandle.SYSTEM, subId); WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, mUserManager.getMainUser(), subId); } else { dispatchIntent(intent, WapPushOverSms.getPermissionForType(mimeType), WapPushOverSms.getAppOpsStringPermissionForIntent(mimeType), options, this, UserHandle.SYSTEM, subId); } } else { // Now that the intents have been deleted we can clean up the PDU data. if (!Intents.DATA_SMS_RECEIVED_ACTION.equals(action) Loading
src/java/com/android/internal/telephony/SmsDispatchersController.java +2 −2 Original line number Diff line number Diff line Loading @@ -381,9 +381,9 @@ public class SmsDispatchersController extends Handler { mImsSmsDispatcher = new ImsSmsDispatcher(phone, this, ImsManager::getConnector); mCdmaDispatcher = new CdmaSMSDispatcher(phone, this); mGsmInboundSmsHandler = GsmInboundSmsHandler.makeInboundSmsHandler(phone.getContext(), storageMonitor, phone, looper); storageMonitor, phone, looper, mFeatureFlags); mCdmaInboundSmsHandler = CdmaInboundSmsHandler.makeInboundSmsHandler(phone.getContext(), storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher, looper); storageMonitor, phone, (CdmaSMSDispatcher) mCdmaDispatcher, looper, mFeatureFlags); mGsmDispatcher = new GsmSMSDispatcher(phone, this, mGsmInboundSmsHandler); SmsBroadcastUndelivered.initialize(phone.getContext(), mGsmInboundSmsHandler, mCdmaInboundSmsHandler); Loading
src/java/com/android/internal/telephony/WapPushOverSms.java +17 −4 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.google.android.mms.pdu.PduHeaders.MESSAGE_TYPE_NOTIFICATION_IN import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AppOpsManager; import android.app.BroadcastOptions; Loading @@ -45,6 +46,7 @@ import android.telephony.SmsManager; import android.telephony.SubscriptionManager; import android.text.TextUtils; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.uicc.IccUtils; import com.android.internal.telephony.util.TelephonyUtils; import com.android.telephony.Rlog; Loading @@ -67,8 +69,14 @@ public class WapPushOverSms implements ServiceConnection { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private final Context mContext; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private UserManager mUserManager; PowerWhitelistManager mPowerWhitelistManager; protected final @NonNull FeatureFlags mFeatureFlags; private String mWapPushManagerPackage; /** Assigned from ServiceConnection callback on main threaad. */ Loading Loading @@ -128,11 +136,11 @@ public class WapPushOverSms implements ServiceConnection { if (DBG) Rlog.v(TAG, "wappush manager disconnected."); } public WapPushOverSms(Context context) { public WapPushOverSms(Context context, FeatureFlags featureFlags) { mFeatureFlags = featureFlags; mContext = context; mPowerWhitelistManager = mContext.getSystemService(PowerWhitelistManager.class); UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mUserManager = mContext.getSystemService(UserManager.class); bindWapPushManagerService(mContext); } Loading Loading @@ -325,6 +333,7 @@ public class WapPushOverSms implements ServiceConnection { * {@link Activity#RESULT_OK} if the message has been broadcast * to applications */ @SuppressLint("MissingPermission") public int dispatchWapPdu(byte[] pdu, InboundSmsHandler.SmsBroadcastReceiver receiver, InboundSmsHandler handler, String address, int subId, long messageId) { DecodedResult result = decodeWapPdu(pdu, handler); Loading Loading @@ -422,8 +431,12 @@ public class WapPushOverSms implements ServiceConnection { } if (userHandle == null) { if (mFeatureFlags.smsMmsDeliverBroadcastsRedirectToMainUser()) { userHandle = mUserManager.getMainUser(); } else { userHandle = UserHandle.SYSTEM; } } handler.dispatchIntent(intent, getPermissionForType(result.mimeType), getAppOpsStringPermissionForIntent(result.mimeType), options, receiver, userHandle, subId); Loading
src/java/com/android/internal/telephony/cdma/CdmaInboundSmsHandler.java +6 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.internal.telephony.WspTypeDecoder; import com.android.internal.telephony.cdma.sms.BearerData; import com.android.internal.telephony.cdma.sms.CdmaSmsAddress; import com.android.internal.telephony.cdma.sms.SmsEnvelope; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.util.HexDump; import java.io.ByteArrayOutputStream; Loading Loading @@ -78,8 +79,9 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { * Create a new inbound SMS handler for CDMA. */ private CdmaInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper) { super("CdmaInboundSmsHandler", context, storageMonitor, phone, looper); Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper, FeatureFlags featureFlags) { super("CdmaInboundSmsHandler", context, storageMonitor, phone, looper, featureFlags); mSmsDispatcher = smsDispatcher; phone.mCi.setOnNewCdmaSms(getHandler(), EVENT_NEW_SMS, null); Loading Loading @@ -171,9 +173,9 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { */ public static CdmaInboundSmsHandler makeInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, CdmaSMSDispatcher smsDispatcher, Looper looper) { Looper looper, FeatureFlags featureFlags) { CdmaInboundSmsHandler handler = new CdmaInboundSmsHandler(context, storageMonitor, phone, smsDispatcher, looper); phone, smsDispatcher, looper, featureFlags); handler.start(); return handler; } Loading
src/java/com/android/internal/telephony/gsm/GsmInboundSmsHandler.java +6 −4 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.internal.telephony.SmsHeader; import com.android.internal.telephony.SmsMessageBase; import com.android.internal.telephony.SmsStorageMonitor; import com.android.internal.telephony.VisualVoicemailSmsFilter; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.uicc.UsimServiceTable; /** Loading @@ -58,8 +59,8 @@ public class GsmInboundSmsHandler extends InboundSmsHandler { * Create a new GSM inbound SMS handler. */ private GsmInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { super("GsmInboundSmsHandler", context, storageMonitor, phone, looper); Phone phone, Looper looper, FeatureFlags featureFlags) { super("GsmInboundSmsHandler", context, storageMonitor, phone, looper, featureFlags); phone.mCi.setOnNewGsmSms(getHandler(), EVENT_NEW_SMS, null); mDataDownloadHandler = new UsimDataDownloadHandler(phone.mCi, phone.getPhoneId()); mCellBroadcastServiceManager.enable(); Loading Loading @@ -129,9 +130,10 @@ public class GsmInboundSmsHandler extends InboundSmsHandler { * Wait for state machine to enter startup state. We can't send any messages until then. */ public static GsmInboundSmsHandler makeInboundSmsHandler(Context context, SmsStorageMonitor storageMonitor, Phone phone, Looper looper) { SmsStorageMonitor storageMonitor, Phone phone, Looper looper, FeatureFlags featureFlags) { GsmInboundSmsHandler handler = new GsmInboundSmsHandler(context, storageMonitor, phone, looper); new GsmInboundSmsHandler(context, storageMonitor, phone, looper, featureFlags); handler.start(); return handler; } Loading