Merge "Replace getPhoneCount with getMaxPhoneCount upon object allocation."
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
index ff15ada..b875592 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
@@ -266,6 +266,13 @@
return false;
}
+ // Check if message body is empty
+ String msgBody = cbm.getMessageBody();
+ if (msgBody == null || msgBody.length() == 0) {
+ Log.e(TAG, "Empty content or Unsupported charset");
+ return false;
+ }
+
// Check if we need to perform language filtering.
CellBroadcastChannelRange range = CellBroadcastChannelManager
.getCellBroadcastChannelRangeFromMessage(getApplicationContext(), cbm);
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index a426fe4..82fadf5 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -151,6 +151,9 @@
// Sets the default values of the shared preference if there isn't any.
PreferenceManager.setDefaultValues(context, R.xml.preferences, false);
+ sp.edit().putBoolean(CellBroadcastSettings.KEY_USE_FULL_VOLUME_SETTINGS_CHANGED,
+ false).apply();
+
// If the device is in test harness mode, we need to disable emergency alert by
// default.
if (ActivityManager.isRunningInUserTestHarness()) {
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
index d242d8a..3bd7376 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
@@ -22,6 +22,7 @@
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Bundle;
@@ -36,6 +37,7 @@
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragment;
+import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
@@ -71,6 +73,9 @@
// Always play at full volume when playing the alert sound.
public static final String KEY_USE_FULL_VOLUME = "use_full_volume";
+ public static final String KEY_USE_FULL_VOLUME_SETTINGS_CHANGED =
+ "use_full_volume_settings_changed";
+
// Preference category for emergency alert and CMAS settings.
public static final String KEY_CATEGORY_EMERGENCY_ALERTS = "category_emergency_alerts";
@@ -247,7 +252,7 @@
findPreference(KEY_CATEGORY_EMERGENCY_ALERTS);
}
-
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
mDisableSevereWhenExtremeDisabled = isFeatureEnabled(getContext(),
CarrierConfigManager.KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL, true);
@@ -403,6 +408,19 @@
startConfigServiceListener);
}
+ if (mFullVolumeCheckBox != null
+ && !sp.getBoolean(KEY_USE_FULL_VOLUME_SETTINGS_CHANGED, false)) {
+ // If the user hasn't changed this settings yet, use the default settings from
+ // resource overlay.
+ mFullVolumeCheckBox.setChecked(res.getBoolean(R.bool.use_full_volume));
+ mFullVolumeCheckBox.setOnPreferenceChangeListener(
+ (pref, newValue) -> {
+ sp.edit().putBoolean(KEY_USE_FULL_VOLUME_SETTINGS_CHANGED,
+ true).apply();
+ return true;
+ });
+ }
+
if (mAlertHistory != null) {
mAlertHistory.setOnPreferenceClickListener(
new Preference.OnPreferenceClickListener() {
@@ -421,12 +439,12 @@
return !CellBroadcastChannelManager.getCellBroadcastChannelRanges(
this.getContext(), R.array.required_monthly_test_range_strings).isEmpty()
|| !CellBroadcastChannelManager.getCellBroadcastChannelRanges(
- this.getContext(), R.array.exercise_alert_range_strings).isEmpty()
+ this.getContext(), R.array.exercise_alert_range_strings).isEmpty()
|| !CellBroadcastChannelManager.getCellBroadcastChannelRanges(
- this.getContext(), R.array.operator_defined_alert_range_strings)
+ this.getContext(), R.array.operator_defined_alert_range_strings)
.isEmpty()
|| !CellBroadcastChannelManager.getCellBroadcastChannelRanges(
- this.getContext(), R.array.etws_test_alerts_range_strings).isEmpty();
+ this.getContext(), R.array.etws_test_alerts_range_strings).isEmpty();
}
private void initReminderIntervalList() {