diff options
Diffstat (limited to 'src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java')
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index be5d38a23..c290dd809 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -34,6 +34,7 @@ import androidx.annotation.NonNull; import com.android.cellbroadcastreceiver.CellBroadcastChannelManager.CellBroadcastChannelRange; import com.android.internal.annotations.VisibleForTesting; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -98,6 +99,23 @@ public class CellBroadcastConfigService extends IntentService { return subIds; } + private void resetCellBroadcastChannels(int subId) { + SmsManager manager; + if (subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) { + manager = SmsManager.getSmsManagerForSubscriptionId(subId); + } else { + manager = SmsManager.getDefault(); + } + + // TODO: Call manager.resetAllCellBroadcastRanges() in Android S. + try { + Method method = SmsManager.class.getDeclaredMethod("resetAllCellBroadcastRanges"); + method.invoke(manager); + } catch (Exception e) { + log("Can't reset cell broadcast ranges. e=" + e); + } + } + /** * Enable cell broadcast messages channels. Messages can be only received on the * enabled channels. @@ -106,6 +124,7 @@ public class CellBroadcastConfigService extends IntentService { */ @VisibleForTesting public void enableCellBroadcastChannels(int subId) { + resetCellBroadcastChannels(subId); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); Resources res = CellBroadcastSettings.getResources(this, subId); |