summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2020-06-17 10:39:52 -0700
committerJack Yu <jackyu@google.com>2020-06-18 22:56:44 +0000
commitceb88bb2cbc3ad8351a7e7d00d6d5ac315e97330 (patch)
tree8c17bd2e8edb92d5b59fc51172b4d130e35056d4 /src
parent3ee59b4d6980f32c74e533248c9e131636ea6b27 (diff)
downloadCellBroadcastReceiver-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.java19
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);