Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8bffc9fb authored by Jordan Liu's avatar Jordan Liu
Browse files

Make CellBroadcast APIs public

Also includes permission checks for enable/disable range, which
Require RECEIVE_EMERGENCY_BROADCAST.

Bug: 135956699
Test: Manually verify that CellBroadcastRecevier is able to call, verify
with CTS that without permissions a SecurityException is thrown
Change-Id: I3ee6c81b353f707caff13f5906b8dc6a66487267
Merged-In: I3ee6c81b353f707caff13f5906b8dc6a66487267
parent cee1ecba
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -806,6 +806,9 @@ public class IccSmsInterfaceManager {
    }

    public boolean enableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
        mContext.enforceCallingPermission("android.permission.RECEIVE_EMERGENCY_BROADCAST",
                "enabling cell broadcast range [" + startMessageId + "-" + endMessageId + "]. "
                        + "ranType=" + ranType);
        if (ranType == SmsManager.CELL_BROADCAST_RAN_TYPE_GSM) {
            return enableGsmBroadcastRange(startMessageId, endMessageId);
        } else if (ranType == SmsManager.CELL_BROADCAST_RAN_TYPE_CDMA) {
@@ -816,6 +819,9 @@ public class IccSmsInterfaceManager {
    }

    public boolean disableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
        mContext.enforceCallingPermission("android.permission.RECEIVE_EMERGENCY_BROADCAST",
                "disabling cell broadcast range [" + startMessageId + "-" + endMessageId
                        + "]. ranType=" + ranType);
        if (ranType == SmsManager.CELL_BROADCAST_RAN_TYPE_GSM ) {
            return disableGsmBroadcastRange(startMessageId, endMessageId);
        } else if (ranType == SmsManager.CELL_BROADCAST_RAN_TYPE_CDMA)  {
+1 −1
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ public class GsmCellBroadcastHandler extends CellBroadcastHandler {

            SmsCbLocation location;
            switch (header.getGeographicalScope()) {
                case SmsCbMessage.GEOGRAPHICAL_SCOPE_LA_WIDE:
                case SmsCbMessage.GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE:
                    location = new SmsCbLocation(plmn, lac, -1);
                    break;

+2 −1
Original line number Diff line number Diff line
@@ -92,7 +92,8 @@ public class GsmSmsCbTest extends AndroidTestCase {
        doTestGeographicalScopeValue(pdu, (byte)0x00,
                SmsCbMessage.GEOGRAPHICAL_SCOPE_CELL_WIDE_IMMEDIATE);
        doTestGeographicalScopeValue(pdu, (byte)0x40, SmsCbMessage.GEOGRAPHICAL_SCOPE_PLMN_WIDE);
        doTestGeographicalScopeValue(pdu, (byte)0x80, SmsCbMessage.GEOGRAPHICAL_SCOPE_LA_WIDE);
        doTestGeographicalScopeValue(pdu, (byte)0x80,
                SmsCbMessage.GEOGRAPHICAL_SCOPE_LOCATION_AREA_WIDE);
        doTestGeographicalScopeValue(pdu, (byte)0xC0, SmsCbMessage.GEOGRAPHICAL_SCOPE_CELL_WIDE);
    }