diff options
author | Jack Yu <jackyu@google.com> | 2020-06-17 10:39:52 -0700 |
---|---|---|
committer | Jack Yu <jackyu@google.com> | 2020-06-18 22:56:44 +0000 |
commit | ceb88bb2cbc3ad8351a7e7d00d6d5ac315e97330 (patch) | |
tree | 8c17bd2e8edb92d5b59fc51172b4d130e35056d4 /src | |
parent | 3ee59b4d6980f32c74e533248c9e131636ea6b27 (diff) | |
download | CellBroadcastReceiver-ceb88bb2cbc3ad8351a7e7d00d6d5ac315e97330.tar.gz |
Reset cell broadcast config before enabling all channels
Before cell broadcast config service enabling all channels, it
reset all channels that were previously enabled. This will make
sure the full channel config can be pushed down to modem. This
also solved the issue that channel config not sending to modem
when SIM is swapped. Note that a hidden API is added and will
be unhide in the next Android release.
Fix: 155027085
Test: Manual
Merged-In: I9b88b8c4900247f692c82e485f9be50d42e56680
Change-Id: I9b88b8c4900247f692c82e485f9be50d42e56680
Diffstat (limited to 'src')
-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); |