From 7eb1ab06012de1a70b47483167b29e1049049c90 Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Tue, 16 Nov 2021 20:44:21 +0000 Subject: Support cell broadcast configuration for FR-Alert Bug: 179188049 Bug: 198735144 Test: manual Change-Id: I916c8e0765a2106daef374d6afa9c906ce496ef6 --- res/values-mcc208/config.xml | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 res/values-mcc208/config.xml diff --git a/res/values-mcc208/config.xml b/res/values-mcc208/config.xml new file mode 100644 index 000000000..f30428567 --- /dev/null +++ b/res/values-mcc208/config.xml @@ -0,0 +1,72 @@ + + + + + dd/MM/yyyy hh:mm a + + + 0x1112:rat=gsm, emergency=true, always_on=true, override_dnd=true + + 0x111F:rat=gsm, emergency=true, always_on=true, override_dnd=true + + + + 0x1113:rat=gsm, emergency=true, override_dnd=true + + 0x1120:rat=gsm, emergency=true, override_dnd=true + + + + 0x1117:rat=gsm, emergency=true + + 0x1124:rat=gsm, emergency=true + + + + 0x112C:rat=gsm, emergency=true + + 0x112D:rat=gsm, emergency=true + + + + 0x111B:rat=gsm, emergency=true + + 0x1128:rat=gsm, emergency=true + + + + + 0x111C:rat=gsm, emergency=true + + 0x1129:rat=gsm, emergency=true + + + true + + + 0x111D:rat=gsm, emergency=true + + 0x112A:rat=gsm, emergency=true + + + true + + true + + + + + -- cgit v1.2.3 From 2b5c078eebfcab1f5eafe317ceb974b3c8aa1930 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Fri, 12 Nov 2021 11:55:42 +0000 Subject: Enable 4396~4399 cellbroadcast channels for Qatar Bug: 204524777 Test: Manual Change-Id: I14f31f0a56e7248acb5d22ec43cfb8a05a5c382c --- res/values-mcc427/config.xml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 res/values-mcc427/config.xml diff --git a/res/values-mcc427/config.xml b/res/values-mcc427/config.xml new file mode 100644 index 000000000..381ebc1bf --- /dev/null +++ b/res/values-mcc427/config.xml @@ -0,0 +1,32 @@ + + + + + + + + 0x112C:rat=gsm, emergency=true + + 0x112D:rat=gsm, emergency=true + + + + + 0x112E:rat=gsm, emergency=true + + 0x112F:rat=gsm, emergency=true + + -- cgit v1.2.3 From 27b6a367b615e06eede5489d8b95949f66183e37 Mon Sep 17 00:00:00 2001 From: youngtaecha Date: Wed, 10 Nov 2021 08:14:21 +0000 Subject: Support WEA3.0 for Puerto Rico Bug: 206302171 Test: manual Change-Id: I6de5d7dfadd4faad7adbf657945d9a1ea6821e5a --- res/values-mcc330/config.xml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/res/values-mcc330/config.xml b/res/values-mcc330/config.xml index 07f7b90df..af78e37c3 100644 --- a/res/values-mcc330/config.xml +++ b/res/values-mcc330/config.xml @@ -15,6 +15,43 @@ --> + + + 0x112C:rat=gsm, emergency=true + + 0x112D:rat=gsm, emergency=true + + + + + 0x112E:rat=gsm, emergency=true + + 0x112F:rat=gsm, emergency=true + + + + + 0x1130:rat=gsm, emergency=true + + + legacy_linkify + + + false + + + true + + + true + + true + MMM dd, HH:mm a -- cgit v1.2.3 From 0cfc628e3d0908608b388660dcd46545776db2ce Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Sat, 13 Nov 2021 05:10:51 +0000 Subject: Support config for roaming network Bug: 198618350 Test: atest CellBroadcastReceiverUnitTests Test: manual Change-Id: I1d666c1a3260328d1e3cf4eca3f3ac1a70af2bd9 Merged-Id: I1d666c1a3260328d1e3cf4eca3f3ac1a70af2bd9 --- Android.bp | 1 + res/values/config.xml | 9 + res/values/strings.xml | 5 + res/xml/preferences.xml | 3 + .../CellBroadcastAlertDialog.java | 4 +- .../CellBroadcastAlertService.java | 181 +++++++------- .../CellBroadcastChannelManager.java | 277 ++++++++++++++------- .../CellBroadcastConfigService.java | 161 ++++++++++-- .../CellBroadcastReceiver.java | 95 ++++++- .../CellBroadcastResources.java | 162 +++++------- .../CellBroadcastSettings.java | 123 ++++++++- .../unit/CellBroadcastAlertServiceTest.java | 3 + .../unit/CellBroadcastChannelManagerTest.java | 197 +++++++++++++-- .../unit/CellBroadcastConfigServiceTest.java | 215 +++++++++++++++- .../unit/CellBroadcastReceiverTest.java | 124 +++++++++ .../unit/CellBroadcastServiceTestCase.java | 4 +- .../unit/CellBroadcastSettingsTest.java | 30 +++ .../unit/CellBroadcastTest.java | 12 + 18 files changed, 1267 insertions(+), 339 deletions(-) diff --git a/Android.bp b/Android.bp index 43bd17349..4e4577306 100644 --- a/Android.bp +++ b/Android.bp @@ -40,6 +40,7 @@ java_defaults { "SettingsLibSettingsTheme", "SettingsLibCollapsingToolbarBaseActivity", "SettingsLibMainSwitchPreference", + "SettingsLibTopIntroPreference", "modules-utils-build_system", ], optimize: { diff --git a/res/values/config.xml b/res/values/config.xml index 9c2c0c2f6..ffc722a81 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -181,6 +181,15 @@ + + + + 208 + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 77fae224d..7c140dcc9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -384,6 +384,11 @@ Message copied + + + + While you\'re roaming, you may get some alerts that aren\'t included in these settings + Settings changed by carrier Tap to see wireless emergency alert settings diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 327e90267..fc0649e24 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -25,6 +25,9 @@ android:icon="@drawable/ic_info_outline_24dp" android:selectable="false" /> + + ranges = channelManager.getCellBroadcastChannelRanges( - R.array.additional_cbs_channels_strings); - - for (CellBroadcastChannelRange range : ranges) { - if (range.mStartId <= channel && range.mEndId >= channel) { - // Check if the channel is within the scope. If not, ignore the alert message. - if (!channelManager.checkScope(range.mScope)) { - Log.d(TAG, "The range [" + range.mStartId + "-" + range.mEndId - + "] is not within the scope. mScope = " + range.mScope); - return false; - } - - if (range.mAlertType == AlertType.TEST) { - return emergencyAlertEnabled - && CellBroadcastSettings.isTestAlertsToggleVisible( - getApplicationContext()) - && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS, - false); - } - if (range.mAlertType == AlertType.AREA) { - return emergencyAlertEnabled && PreferenceManager - .getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS, - false); - } + if (resourcesKey == R.array.additional_cbs_channels_strings) { + // Check if the channel is within the scope. If not, ignore the alert message. + if (!channelManager.checkScope(range.mScope)) { + Log.d(TAG, "The range [" + range.mStartId + "-" + range.mEndId + + "] is not within the scope. mScope = " + range.mScope); + return false; + } - return emergencyAlertEnabled; + if (range.mAlertType == AlertType.TEST) { + return emergencyAlertEnabled + && CellBroadcastSettings.isTestAlertsToggleVisible(getApplicationContext()) + && checkAlertConfigEnabled(subId, + CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS, false); + } + if (range.mAlertType == AlertType.AREA) { + return emergencyAlertEnabled && checkAlertConfigEnabled(subId, + CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS, false); } + + return emergencyAlertEnabled; } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.emergency_alerts_channels_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this).getBoolean( - CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true); + if (resourcesKey == R.array.emergency_alerts_channels_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true); } // CMAS warning types - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.cmas_presidential_alerts_channels_range_strings)) { + if (resourcesKey == R.array.cmas_presidential_alerts_channels_range_strings) { // always enabled return true; } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.cmas_alert_extreme_channels_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this).getBoolean( - CellBroadcastSettings.KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS, true); + if (resourcesKey == R.array.cmas_alert_extreme_channels_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS, true); } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.cmas_alerts_severe_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this).getBoolean( - CellBroadcastSettings.KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS, true); + if (resourcesKey == R.array.cmas_alerts_severe_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS, true); } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.cmas_amber_alerts_channels_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_CMAS_AMBER_ALERTS, true); + if (resourcesKey == R.array.cmas_amber_alerts_channels_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_CMAS_AMBER_ALERTS, true); } - if (channelManager.checkCellBroadcastChannelRange( - channel, R.array.exercise_alert_range_strings) && - res.getBoolean(R.bool.show_separate_exercise_settings)) { - return emergencyAlertEnabled && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_EXERCISE_ALERTS, false); + if (resourcesKey == R.array.exercise_alert_range_strings + && res.getBoolean(R.bool.show_separate_exercise_settings)) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_EXERCISE_ALERTS, false); } - if (channelManager.checkCellBroadcastChannelRange( - channel, R.array.operator_defined_alert_range_strings) && - res.getBoolean(R.bool.show_separate_operator_defined_settings)) { - return emergencyAlertEnabled && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_OPERATOR_DEFINED_ALERTS, false); + if (resourcesKey == R.array.operator_defined_alert_range_strings + && res.getBoolean(R.bool.show_separate_operator_defined_settings)) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_OPERATOR_DEFINED_ALERTS, false); } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.required_monthly_test_range_strings) - || channelManager.checkCellBroadcastChannelRange(channel, - R.array.exercise_alert_range_strings) - || channelManager.checkCellBroadcastChannelRange(channel, - R.array.operator_defined_alert_range_strings)) { + if (resourcesKey == R.array.required_monthly_test_range_strings + || resourcesKey == R.array.exercise_alert_range_strings + || resourcesKey == R.array.operator_defined_alert_range_strings) { return emergencyAlertEnabled && CellBroadcastSettings.isTestAlertsToggleVisible(getApplicationContext()) - && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS, - false); + && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS, false); } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.public_safety_messages_channels_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_PUBLIC_SAFETY_MESSAGES, - true); + if (resourcesKey == R.array.public_safety_messages_channels_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_PUBLIC_SAFETY_MESSAGES, true); } - if (channelManager.checkCellBroadcastChannelRange(channel, - R.array.state_local_test_alert_range_strings)) { - return emergencyAlertEnabled - && PreferenceManager.getDefaultSharedPreferences(this) - .getBoolean(CellBroadcastSettings.KEY_ENABLE_STATE_LOCAL_TEST_ALERTS, - false); + if (resourcesKey == R.array.state_local_test_alert_range_strings) { + return emergencyAlertEnabled && checkAlertConfigEnabled( + subId, CellBroadcastSettings.KEY_ENABLE_STATE_LOCAL_TEST_ALERTS, false); } Log.e(TAG, "received undefined channels: " + channel); @@ -648,7 +620,7 @@ public class CellBroadcastAlertService extends Service { } } else { int channel = message.getServiceCategory(); - ArrayList ranges = channelManager + List ranges = channelManager .getAllCellBroadcastChannelRanges(); for (CellBroadcastChannelRange range : ranges) { if (channel >= range.mStartId && channel <= range.mEndId) { @@ -996,4 +968,23 @@ public class CellBroadcastAlertService extends Service { } return false; } + + private boolean checkAlertConfigEnabled(int subId, String key, boolean defaultValue) { + boolean result = defaultValue; + String roamingOperator = CellBroadcastReceiver.getRoamingOperatorSupported(this); + // For roaming supported case + if (!roamingOperator.isEmpty()) { + int resId = CellBroadcastSettings.getResourcesIdForDefaultPrefValue(key); + if (resId != 0) { + result = CellBroadcastSettings.getResourcesByOperator( + mContext, subId, roamingOperator).getBoolean(resId); + // For roaming support case, the channel can be enabled by the default config + // for the network even it is disabled by the preference + if (result) { + return true; + } + } + } + return PreferenceManager.getDefaultSharedPreferences(this).getBoolean(key, defaultValue); + } } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java b/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java index a56cd0a42..22ececaad 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java @@ -18,15 +18,22 @@ package com.android.cellbroadcastreceiver; import static android.telephony.ServiceState.ROAMING_TYPE_NOT_ROAMING; +import static com.android.cellbroadcastreceiver.CellBroadcastReceiver.VDBG; + import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Context; +import android.content.res.Resources; import android.os.SystemProperties; import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.SmsCbMessage; import android.telephony.TelephonyManager; +import android.text.TextUtils; +import android.util.ArrayMap; import android.util.Log; +import android.util.Pair; import androidx.annotation.VisibleForTesting; @@ -35,6 +42,7 @@ import com.android.cellbroadcastreceiver.CellBroadcastAlertService.AlertType; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; /** * CellBroadcastChannelManager handles the additional cell broadcast channels that @@ -54,6 +62,7 @@ public class CellBroadcastChannelManager { private static final String TAG = "CBChannelManager"; + private static final int MAX_CACHE_SIZE = 3; private static List sCellBroadcastRangeResourceKeys = new ArrayList<>( Arrays.asList(R.array.additional_cbs_channels_strings, R.array.emergency_alerts_channels_range_strings, @@ -70,13 +79,19 @@ public class CellBroadcastChannelManager { R.array.state_local_test_alert_range_strings )); - private static ArrayList sAllCellBroadcastChannelRanges = null; - private static final Object channelRangesLock = new Object(); + private static Map>> + sAllCellBroadcastChannelRangesPerSub = new ArrayMap<>(); + private static Map>> + sAllCellBroadcastChannelRangesPerOperator = new ArrayMap<>(); + + private static final Object mChannelRangesLock = new Object(); private final Context mContext; private final int mSubId; + private final String mOperator; + private boolean mIsDebugBuild = false; /** @@ -167,14 +182,14 @@ public class CellBroadcastChannelManager { // Display both ways dialog and notification public boolean mDisplayDialogWithNotification = false; - public CellBroadcastChannelRange(Context context, int subId, String channelRange) { + public CellBroadcastChannelRange(Context context, int subId, + Resources res, String channelRange) { mAlertType = AlertType.DEFAULT; mEmergencyLevel = LEVEL_UNKNOWN; mRanType = SmsCbMessage.MESSAGE_FORMAT_3GPP; mScope = SCOPE_UNKNOWN; - mVibrationPattern = - CellBroadcastSettings.getResources(context, subId) - .getIntArray(R.array.default_vibration_pattern); + + mVibrationPattern = res.getIntArray(R.array.default_vibration_pattern); mFilterLanguage = false; // by default all received messages should be displayed. mDisplay = true; @@ -293,8 +308,7 @@ public class CellBroadcastChannelManager { // If alert type is info, override vibration pattern if (!hasVibrationPattern && mAlertType.equals(AlertType.INFO)) { - mVibrationPattern = CellBroadcastSettings.getResources(context, subId) - .getIntArray(R.array.default_notification_vibration_pattern); + mVibrationPattern = res.getIntArray(R.array.default_notification_vibration_pattern); } // Parse the channel range @@ -331,14 +345,88 @@ public class CellBroadcastChannelManager { * @param subId Subscription index */ public CellBroadcastChannelManager(Context context, int subId) { - this(context, subId, SystemProperties.getInt("ro.debuggable", 0) == 1); + this(context, subId, CellBroadcastReceiver.getRoamingOperatorSupported(context), + SystemProperties.getInt("ro.debuggable", 0) == 1); + } + + public CellBroadcastChannelManager(Context context, int subId, @Nullable String operator) { + this(context, subId, operator, SystemProperties.getInt("ro.debuggable", 0) == 1); } @VisibleForTesting - public CellBroadcastChannelManager(Context context, int subId, boolean isDebugBuild) { + public CellBroadcastChannelManager(Context context, int subId, + String operator, boolean isDebugBuild) { mContext = context; mSubId = subId; + mOperator = operator; mIsDebugBuild = isDebugBuild; + initAsNeeded(); + } + + /** + * Parse channel ranges from resources, and initialize the cache as needed + */ + private void initAsNeeded() { + if (!TextUtils.isEmpty(mOperator)) { + synchronized (mChannelRangesLock) { + if (!sAllCellBroadcastChannelRangesPerOperator.containsKey(mOperator)) { + if (VDBG) { + log("init for operator: " + mOperator); + } + if (sAllCellBroadcastChannelRangesPerOperator.size() == MAX_CACHE_SIZE) { + sAllCellBroadcastChannelRangesPerOperator.clear(); + } + sAllCellBroadcastChannelRangesPerOperator.put(mOperator, + getChannelRangesMapFromResoures(CellBroadcastSettings + .getResourcesByOperator(mContext, mSubId, mOperator))); + } + } + } + + synchronized (mChannelRangesLock) { + if (!sAllCellBroadcastChannelRangesPerSub.containsKey(mSubId)) { + if (sAllCellBroadcastChannelRangesPerSub.size() == MAX_CACHE_SIZE) { + sAllCellBroadcastChannelRangesPerSub.clear(); + } + if (VDBG) { + log("init for sub: " + mSubId); + } + sAllCellBroadcastChannelRangesPerSub.put(mSubId, + getChannelRangesMapFromResoures(CellBroadcastSettings + .getResources(mContext, mSubId))); + } + } + } + + private @NonNull Map> getChannelRangesMapFromResoures( + @NonNull Resources res) { + Map> map = new ArrayMap<>(); + + for (int key : sCellBroadcastRangeResourceKeys) { + String[] ranges = res.getStringArray(key); + if (ranges != null) { + List rangesList = new ArrayList<>(); + for (String range : ranges) { + try { + if (VDBG) { + log("parse channel range: " + range); + } + CellBroadcastChannelRange r = + new CellBroadcastChannelRange(mContext, mSubId, res, range); + // Bypass if the range is disabled + if (r.mIsDebugBuildOnly && !mIsDebugBuild) { + continue; + } + rangesList.add(r); + } catch (Exception e) { + loge("Failed to parse \"" + range + "\". e=" + e); + } + } + map.put(key, rangesList); + } + } + + return map; } /** @@ -348,26 +436,23 @@ public class CellBroadcastChannelManager { * * @return The list of channel ranges enabled by the carriers. */ - public @NonNull ArrayList getCellBroadcastChannelRanges(int key) { - ArrayList result = new ArrayList<>(); - String[] ranges = - CellBroadcastSettings.getResources(mContext, mSubId).getStringArray(key); - if (ranges != null) { - for (String range : ranges) { - try { - CellBroadcastChannelRange r = - new CellBroadcastChannelRange(mContext, mSubId, range); - // Bypass if the range is disabled - if (r.mIsDebugBuildOnly && !mIsDebugBuild) { - continue; - } - result.add(r); - } catch (Exception e) { - loge("Failed to parse \"" + range + "\". e=" + e); - } + public @NonNull List getCellBroadcastChannelRanges(int key) { + List result = null; + + synchronized (mChannelRangesLock) { + initAsNeeded(); + + // Check the config per network first if applicable + if (!TextUtils.isEmpty(mOperator)) { + result = sAllCellBroadcastChannelRangesPerOperator.get(mOperator).get(key); + } + + if (result == null) { + result = sAllCellBroadcastChannelRangesPerSub.get(mSubId).get(key); } } - return result; + + return result == null ? new ArrayList<>() : result; } /** @@ -375,31 +460,28 @@ public class CellBroadcastChannelManager { * * @return all cell broadcast channels */ - public @NonNull ArrayList getAllCellBroadcastChannelRanges() { - synchronized(channelRangesLock) { - if (sAllCellBroadcastChannelRanges != null) return sAllCellBroadcastChannelRanges; - - Log.d(TAG, "Create new channel range list"); - ArrayList result = new ArrayList<>(); - - for (int key : sCellBroadcastRangeResourceKeys) { - result.addAll(getCellBroadcastChannelRanges(key)); + public @NonNull List getAllCellBroadcastChannelRanges() { + final List result = new ArrayList<>(); + synchronized (mChannelRangesLock) { + if (!TextUtils.isEmpty(mOperator) + && sAllCellBroadcastChannelRangesPerOperator.containsKey(mOperator)) { + sAllCellBroadcastChannelRangesPerOperator.get(mOperator).forEach( + (k, v)->result.addAll(v)); } - sAllCellBroadcastChannelRanges = result; - return result; + sAllCellBroadcastChannelRangesPerSub.get(mSubId).forEach((k, v)->result.addAll(v)); } + return result; } /** * Clear broadcast channel range list */ public static void clearAllCellBroadcastChannelRanges() { - synchronized(channelRangesLock) { - if (sAllCellBroadcastChannelRanges != null) { - Log.d(TAG, "Clear channel range list"); - sAllCellBroadcastChannelRanges = null; - } + synchronized (mChannelRangesLock) { + Log.d(TAG, "Clear channel range list"); + sAllCellBroadcastChannelRangesPerSub.clear(); + sAllCellBroadcastChannelRangesPerOperator.clear(); } } @@ -411,15 +493,59 @@ public class CellBroadcastChannelManager { * return {@code FALSE} otherwise */ public boolean checkCellBroadcastChannelRange(int channel, int key) { - ArrayList ranges = getCellBroadcastChannelRanges(key); + return getCellBroadcastChannelResourcesKey(channel) == key; + } + + /** + * Get the resources key for the channel + * @param channel Cell broadcast message channel + * + * @return 0 if the key is not found, otherwise the value of the resources key + */ + public int getCellBroadcastChannelResourcesKey(int channel) { + Pair p = findChannelRange(channel); + + return p != null ? p.first : 0; + } + + /** + * Get the CellBroadcastChannelRange for the channel + * @param channel Cell broadcast message channel + * + * @return the CellBroadcastChannelRange for the channel, null if not found + */ + public @Nullable CellBroadcastChannelRange getCellBroadcastChannelRange(int channel) { + Pair p = findChannelRange(channel); + + return p != null ? p.second : null; + } - for (CellBroadcastChannelRange range : ranges) { - if (channel >= range.mStartId && channel <= range.mEndId) { - return checkScope(range.mScope); + private @Nullable Pair findChannelRange(int channel) { + if (!TextUtils.isEmpty(mOperator)) { + Pair p = findChannelRange( + sAllCellBroadcastChannelRangesPerOperator.get(mOperator), channel); + if (p != null) { + return p; } } - return false; + return findChannelRange(sAllCellBroadcastChannelRangesPerSub.get(mSubId), channel); + } + + private @Nullable Pair findChannelRange( + Map> channelRangeMap, int channel) { + if (channelRangeMap != null) { + for (Map.Entry> entry + : channelRangeMap.entrySet()) { + for (CellBroadcastChannelRange range : entry.getValue()) { + if (channel >= range.mStartId && channel <= range.mEndId + && checkScope(range.mScope)) { + return new Pair<>(entry.getKey(), range); + } + } + } + } + return null; } /** @@ -474,24 +600,7 @@ public class CellBroadcastChannelManager { + message.getSubscriptionId()); } - int channel = message.getServiceCategory(); - ArrayList ranges = null; - - for (int key : sCellBroadcastRangeResourceKeys) { - if (checkCellBroadcastChannelRange(channel, key)) { - ranges = getCellBroadcastChannelRanges(key); - break; - } - } - if (ranges != null) { - for (CellBroadcastChannelRange range : ranges) { - if (range.mStartId <= message.getServiceCategory() - && range.mEndId >= message.getServiceCategory()) { - return range; - } - } - } - return null; + return getCellBroadcastChannelRange(message.getServiceCategory()); } /** @@ -511,25 +620,19 @@ public class CellBroadcastChannelManager { } int id = message.getServiceCategory(); - - for (int key : sCellBroadcastRangeResourceKeys) { - ArrayList ranges = - getCellBroadcastChannelRanges(key); - for (CellBroadcastChannelRange range : ranges) { - if (range.mStartId <= id && range.mEndId >= id) { - switch (range.mEmergencyLevel) { - case CellBroadcastChannelRange.LEVEL_EMERGENCY: - Log.d(TAG, "isEmergencyMessage: true, message id = " + id); - return true; - case CellBroadcastChannelRange.LEVEL_NOT_EMERGENCY: - Log.d(TAG, "isEmergencyMessage: false, message id = " + id); - return false; - case CellBroadcastChannelRange.LEVEL_UNKNOWN: - default: - break; - } + CellBroadcastChannelRange range = getCellBroadcastChannelRange(id); + + if (range != null) { + switch (range.mEmergencyLevel) { + case CellBroadcastChannelRange.LEVEL_EMERGENCY: + Log.d(TAG, "isEmergencyMessage: true, message id = " + id); + return true; + case CellBroadcastChannelRange.LEVEL_NOT_EMERGENCY: + Log.d(TAG, "isEmergencyMessage: false, message id = " + id); + return false; + case CellBroadcastChannelRange.LEVEL_UNKNOWN: + default: break; - } } } @@ -541,6 +644,10 @@ public class CellBroadcastChannelManager { return message.isEmergencyMessage(); } + private static void log(String msg) { + Log.d(TAG, msg); + } + private static void loge(String msg) { Log.e(TAG, msg); } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index 9b9b75af4..d00eef825 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -30,6 +30,7 @@ import android.preference.PreferenceManager; import android.telephony.SmsManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; @@ -81,10 +82,13 @@ public class CellBroadcastConfigService extends IntentService { for (int subId : subIds) { log("Enable CellBroadcast on sub " + subId); enableCellBroadcastChannels(subId); + enableCellBroadcastRoamingChannelsAsNeeded(subId); } } else { // For no sim scenario. enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + enableCellBroadcastRoamingChannelsAsNeeded( + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); } } } catch (Exception ex) { @@ -164,7 +168,7 @@ public class CellBroadcastConfigService extends IntentService { resetCellBroadcastChannels(subId); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - Resources res = CellBroadcastSettings.getResources(this, subId); + Resources res = getResources(subId, null); // boolean for each user preference checkbox, true for checked, false for unchecked // Note: If enableAlertsMasterToggle is false, it disables ALL emergency broadcasts @@ -215,14 +219,29 @@ public class CellBroadcastConfigService extends IntentService { boolean enableEmergencyAlerts = enableAlertsMasterToggle && prefs.getBoolean( CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true); - boolean enableGeoFencingTriggerMessage = true; + setCellBroadcastChannelsEnabled(subId, null, enableAlertsMasterToggle, enableEtwsAlerts, + enablePresidential, enableCmasExtremeAlerts, enableCmasSevereAlerts, + enableCmasAmberAlerts, enableTestAlerts, enableExerciseAlerts, + enableOperatorDefined, enableAreaUpdateInfoAlerts, + enablePublicSafetyMessagesChannelAlerts, enableStateLocalTestAlerts, + enableEmergencyAlerts, true); + } + + private void setCellBroadcastChannelsEnabled(int subId, @NonNull String operator, + boolean enableAlertsMasterToggle, boolean enableEtwsAlerts, boolean enablePresidential, + boolean enableCmasExtremeAlerts, boolean enableCmasSevereAlerts, + boolean enableCmasAmberAlerts, boolean enableTestAlerts, boolean enableExerciseAlerts, + boolean enableOperatorDefined, boolean enableAreaUpdateInfoAlerts, + boolean enablePublicSafetyMessagesChannelAlerts, boolean enableStateLocalTestAlerts, + boolean enableEmergencyAlerts, boolean enableGeoFencingTriggerMessage) { if (VDBG) { + log("setCellBroadcastChannelsEnabled for " + subId + ", operator: " + operator); log("enableAlertsMasterToggle = " + enableAlertsMasterToggle); log("enableEtwsAlerts = " + enableEtwsAlerts); log("enablePresidential = " + enablePresidential); log("enableCmasExtremeAlerts = " + enableCmasExtremeAlerts); - log("enableCmasSevereAlerts = " + enableCmasExtremeAlerts); + log("enableCmasSevereAlerts = " + enableCmasSevereAlerts); log("enableCmasAmberAlerts = " + enableCmasAmberAlerts); log("enableTestAlerts = " + enableTestAlerts); log("enableExerciseAlerts = " + enableExerciseAlerts); @@ -235,80 +254,81 @@ public class CellBroadcastConfigService extends IntentService { log("enableGeoFencingTriggerMessage = " + enableGeoFencingTriggerMessage); } + boolean isEnableOnly = !TextUtils.isEmpty(operator); CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager( - getApplicationContext(), subId); + getApplicationContext(), subId, operator); /** Enable CMAS series messages. */ // Enable/Disable Presidential messages. - setCellBroadcastRange(subId, enablePresidential, + setCellBroadcastRange(subId, isEnableOnly, enablePresidential, channelManager.getCellBroadcastChannelRanges( R.array.cmas_presidential_alerts_channels_range_strings)); // Enable/Disable CMAS extreme messages. - setCellBroadcastRange(subId, enableCmasExtremeAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableCmasExtremeAlerts, channelManager.getCellBroadcastChannelRanges( R.array.cmas_alert_extreme_channels_range_strings)); // Enable/Disable CMAS severe messages. - setCellBroadcastRange(subId, enableCmasSevereAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableCmasSevereAlerts, channelManager.getCellBroadcastChannelRanges( R.array.cmas_alerts_severe_range_strings)); // Enable/Disable CMAS amber alert messages. - setCellBroadcastRange(subId, enableCmasAmberAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableCmasAmberAlerts, channelManager.getCellBroadcastChannelRanges( R.array.cmas_amber_alerts_channels_range_strings)); // Enable/Disable test messages. - setCellBroadcastRange(subId, enableTestAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableTestAlerts, channelManager.getCellBroadcastChannelRanges( R.array.required_monthly_test_range_strings)); // Enable/Disable exercise test messages. // This could either controlled by main test toggle or separate exercise test toggle. - setCellBroadcastRange(subId, enableTestAlerts || enableExerciseAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableTestAlerts || enableExerciseAlerts, channelManager.getCellBroadcastChannelRanges( R.array.exercise_alert_range_strings)); // Enable/Disable operator defined test messages. // This could either controlled by main test toggle or separate operator defined test toggle - setCellBroadcastRange(subId, enableTestAlerts || enableOperatorDefined, + setCellBroadcastRange(subId, isEnableOnly, enableTestAlerts || enableOperatorDefined, channelManager.getCellBroadcastChannelRanges( R.array.operator_defined_alert_range_strings)); // Enable/Disable GSM ETWS messages. - setCellBroadcastRange(subId, enableEtwsAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableEtwsAlerts, channelManager.getCellBroadcastChannelRanges( R.array.etws_alerts_range_strings)); // Enable/Disable GSM ETWS test messages. - setCellBroadcastRange(subId, enableTestAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableTestAlerts, channelManager.getCellBroadcastChannelRanges( R.array.etws_test_alerts_range_strings)); // Enable/Disable GSM public safety messages. - setCellBroadcastRange(subId, enablePublicSafetyMessagesChannelAlerts, + setCellBroadcastRange(subId, isEnableOnly, enablePublicSafetyMessagesChannelAlerts, channelManager.getCellBroadcastChannelRanges( R.array.public_safety_messages_channels_range_strings)); // Enable/Disable GSM state/local test alerts. - setCellBroadcastRange(subId, enableStateLocalTestAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableStateLocalTestAlerts, channelManager.getCellBroadcastChannelRanges( R.array.state_local_test_alert_range_strings)); // Enable/Disable GSM geo-fencing trigger messages. - setCellBroadcastRange(subId, enableGeoFencingTriggerMessage, + setCellBroadcastRange(subId, isEnableOnly, enableGeoFencingTriggerMessage, channelManager.getCellBroadcastChannelRanges( R.array.geo_fencing_trigger_messages_range_strings)); // Enable non-CMAS series messages. - setCellBroadcastRange(subId, enableEmergencyAlerts, + setCellBroadcastRange(subId, isEnableOnly, enableEmergencyAlerts, channelManager.getCellBroadcastChannelRanges( R.array.emergency_alerts_channels_range_strings)); // Enable/Disable additional channels based on carrier specific requirement. - ArrayList ranges = + List ranges = channelManager.getCellBroadcastChannelRanges( R.array.additional_cbs_channels_strings); @@ -324,17 +344,88 @@ public class CellBroadcastConfigService extends IntentService { default: enableAlerts = enableAlertsMasterToggle; } - setCellBroadcastRange(subId, enableAlerts, new ArrayList<>(Arrays.asList(range))); + setCellBroadcastRange(subId, isEnableOnly, enableAlerts, + new ArrayList<>(Arrays.asList(range))); } } + + /** + * Enable cell broadcast messages channels. Messages can be only received on the + * enabled channels. + * + * @param subId Subscription index + */ + @VisibleForTesting + public void enableCellBroadcastRoamingChannelsAsNeeded(int subId) { + if (!SubscriptionManager.isValidSubscriptionId(subId)) { + subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; + } + + String roamingOperator = CellBroadcastReceiver.getRoamingOperatorSupported(this); + if (roamingOperator.isEmpty()) { + return; + } + + log("enableCellBroadcastRoamingChannels for roaming network:" + roamingOperator); + Resources res = getResources(subId, roamingOperator); + + // Get default config for roaming network as the settings are based on sim + boolean enablePresidential = true; + + boolean enableAlertsMasterToggle = res.getBoolean(R.bool.master_toggle_enabled_default); + + boolean enableEtwsAlerts = enableAlertsMasterToggle; + + boolean enableCmasExtremeAlerts = enableAlertsMasterToggle && res.getBoolean( + R.bool.extreme_threat_alerts_enabled_default); + + boolean enableCmasSevereAlerts = enableAlertsMasterToggle && res.getBoolean( + R.bool.severe_threat_alerts_enabled_default); + + boolean enableCmasAmberAlerts = enableAlertsMasterToggle && res.getBoolean( + R.bool.amber_alerts_enabled_default); + + boolean enableTestAlerts = enableAlertsMasterToggle && CellBroadcastSettings + .isTestAlertsToggleVisible(getApplicationContext(), roamingOperator) + && res.getBoolean(R.bool.test_alerts_enabled_default); + + boolean enableExerciseAlerts = enableAlertsMasterToggle + && res.getBoolean(R.bool.show_separate_exercise_settings) + && res.getBoolean(R.bool.test_exercise_alerts_enabled_default); + + boolean enableOperatorDefined = enableAlertsMasterToggle + && res.getBoolean(R.bool.show_separate_operator_defined_settings) + && res.getBoolean(R.bool.test_operator_defined_alerts_enabled_default); + + boolean enableAreaUpdateInfoAlerts = res.getBoolean( + R.bool.config_showAreaUpdateInfoSettings) + && res.getBoolean(R.bool.area_update_info_alerts_enabled_default); + + boolean enablePublicSafetyMessagesChannelAlerts = enableAlertsMasterToggle + && res.getBoolean(R.bool.public_safety_messages_enabled_default); + boolean enableStateLocalTestAlerts = enableAlertsMasterToggle + && res.getBoolean(R.bool.state_local_test_alerts_enabled_default); + + boolean enableEmergencyAlerts = enableAlertsMasterToggle && res.getBoolean( + R.bool.emergency_alerts_enabled_default); + + setCellBroadcastChannelsEnabled(subId, roamingOperator, enableAlertsMasterToggle, + enableEtwsAlerts, enablePresidential, enableCmasExtremeAlerts, + enableCmasSevereAlerts, enableCmasAmberAlerts, enableTestAlerts, + enableExerciseAlerts, enableOperatorDefined, enableAreaUpdateInfoAlerts, + enablePublicSafetyMessagesChannelAlerts, enableStateLocalTestAlerts, + enableEmergencyAlerts, true); + } + /** * Enable/disable cell broadcast with messages id range * @param subId Subscription index - * @param enable True for enabling cell broadcast with id range, otherwise for disabling. + * @param isEnableOnly, True for enabling channel only for roaming network + * @param enable True for enabling cell broadcast with id range, otherwise for disabling * @param ranges Cell broadcast id ranges */ - private void setCellBroadcastRange(int subId, boolean enable, - List ranges) { + private void setCellBroadcastRange(int subId, boolean isEnableOnly, + boolean enable, List ranges) { SmsManager manager; if (subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) { manager = SmsManager.getSmsManagerForSubscriptionId(subId); @@ -349,15 +440,39 @@ public class CellBroadcastConfigService extends IntentService { + ":" + range.mEndId); enable = true; } + if (enable) { + if (VDBG) { + log("enableCellBroadcastRange[" + range.mStartId + "-" + range.mEndId + + "], type:" + range.mRanType); + } manager.enableCellBroadcastRange(range.mStartId, range.mEndId, range.mRanType); - } else { + } else if (!isEnableOnly) { + if (VDBG) { + log("disableCellBroadcastRange[" + range.mStartId + "-" + range.mEndId + + "], type:" + range.mRanType); + } manager.disableCellBroadcastRange(range.mStartId, range.mEndId, range.mRanType); } } } } + + /** + * Get resource according to the operator or subId + * @param subId Subscription index + * @param operator Operator numeric, the resource will be retrieved by it if it is no null, + * otherwise, by the sub id. + */ + @VisibleForTesting + public Resources getResources(int subId, String operator) { + if (operator == null) { + return CellBroadcastSettings.getResources(this, subId); + } + return CellBroadcastSettings.getResourcesByOperator(this, subId, operator); + } + private static void log(String msg) { Log.d(TAG, msg); } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index 0a4cf0732..ae45c0e92 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -32,7 +32,6 @@ import android.os.Bundle; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserManager; -import androidx.preference.PreferenceManager; import android.provider.Telephony; import android.provider.Telephony.CellBroadcasts; import android.telephony.CarrierConfigManager; @@ -46,12 +45,13 @@ import android.util.Log; import android.widget.Toast; import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import androidx.preference.PreferenceManager; import com.android.cellbroadcastservice.CellBroadcastStatsLog; import com.android.internal.annotations.VisibleForTesting; import java.util.ArrayList; - +import java.util.Arrays; public class CellBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "CellBroadcastReceiver"; @@ -69,6 +69,9 @@ public class CellBroadcastReceiver extends BroadcastReceiver { // Key to access the shared preference of service state. private static final String SERVICE_STATE = "service_state"; + // Key to access the shared preference of roaming operator. + private static final String ROAMING_OPERATOR_SUPPORTED = "roaming_operator_supported"; + // shared preference under developer settings private static final String ENABLE_ALERT_MASTER_PREF = "enable_alerts_master_toggle"; @@ -94,6 +97,11 @@ public class CellBroadcastReceiver extends BroadcastReceiver { public static final String ACTION_TESTING_MODE_CHANGED = "com.android.cellbroadcastreceiver.intent.ACTION_TESTING_MODE_CHANGED"; + // System property to set roaming network config which can be multiple items split by + // comma, and matched in sequence. This config will insert before the overlay. + private static final String ROAMING_PLMN_SUPPORTED_PROPERTY_KEY = + "persist.cellbroadcast.roaming_plmn_supported"; + private Context mContext; /** @@ -146,11 +154,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { // configurations once moving back from APM. This should be fixed in lower layer // going forward. int ss = intent.getIntExtra(EXTRA_VOICE_REG_STATE, ServiceState.STATE_IN_SERVICE); - if (ss != ServiceState.STATE_POWER_OFF - && getServiceState(context) == ServiceState.STATE_POWER_OFF) { - startConfigServiceToEnableChannels(); - } - setServiceState(ss); + onServiceStateChanged(context, res, ss); } else if (CELLBROADCAST_START_CONFIG_ACTION.equals(action) || SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) { startConfigServiceToEnableChannels(); @@ -202,6 +206,61 @@ public class CellBroadcastReceiver extends BroadcastReceiver { } } + private void onServiceStateChanged(Context context, Resources res, int ss) { + logd("onServiceStateChanged, ss: " + ss); + // check whether to support roaming network + String roamingOperator = null; + if (ss == ServiceState.STATE_IN_SERVICE || ss == ServiceState.STATE_EMERGENCY_ONLY) { + TelephonyManager tm = context.getSystemService(TelephonyManager.class); + String networkOperator = tm.getNetworkOperator(); + logd("networkOperator: " + networkOperator); + + // check roaming config only if the network oprator is not empty as the config + // is based on operator numeric + if (!networkOperator.isEmpty()) { + // No roaming supported by default + roamingOperator = ""; + if ((tm.isNetworkRoaming() || ss == ServiceState.STATE_EMERGENCY_ONLY) + && !networkOperator.equals(tm.getSimOperator())) { + String propRoamingPlmn = SystemProperties.get( + ROAMING_PLMN_SUPPORTED_PROPERTY_KEY, "").trim(); + String[] roamingNetworks = propRoamingPlmn.isEmpty() ? res.getStringArray( + R.array.cmas_roaming_network_strings) : propRoamingPlmn.split(","); + logd("roamingNetworks: " + Arrays.toString(roamingNetworks)); + + for (String r : roamingNetworks) { + r = r.trim(); + if (r.equals("XXXXXX")) { + //match any roaming network, store mcc+mnc + roamingOperator = networkOperator; + break; + } else if (r.equals("XXX")) { + //match any roaming network, only store mcc + roamingOperator = networkOperator.substring(0, 3); + break; + } else if (networkOperator.startsWith(r)) { + roamingOperator = r; + break; + } + } + } + } + } + + if ((ss != ServiceState.STATE_POWER_OFF + && getServiceState(context) == ServiceState.STATE_POWER_OFF) + || (roamingOperator != null && !roamingOperator.equals( + getRoamingOperatorSupported(context)))) { + startConfigServiceToEnableChannels(); + } + setServiceState(ss); + + if (roamingOperator != null) { + log("update supported roaming operator as " + roamingOperator); + setRoamingOperatorSupported(roamingOperator); + } + } + /** * Send an intent to reset the users WEA settings if there is a new carrier on the default subId * @@ -276,7 +335,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { .apply(); } - /** + /** * Enable/disable cell broadcast receiver testing mode. * * @param on {@code true} if testing mode is on, otherwise off. @@ -306,6 +365,14 @@ public class CellBroadcastReceiver extends BroadcastReceiver { sp.edit().putInt(SERVICE_STATE, ss).commit(); } + /** + * Store the roaming operator + */ + private void setRoamingOperatorSupported(String roamingOperator) { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext); + sp.edit().putString(ROAMING_OPERATOR_SUPPORTED, roamingOperator).commit(); + } + /** * @return the stored voice registration service state */ @@ -314,6 +381,14 @@ public class CellBroadcastReceiver extends BroadcastReceiver { return sp.getInt(SERVICE_STATE, ServiceState.STATE_IN_SERVICE); } + /** + * @return the supported roaming operator + */ + public static String getRoamingOperatorSupported(Context context) { + SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); + return sp.getString(ROAMING_OPERATOR_SUPPORTED, ""); + } + /** * update reminder interval */ @@ -624,6 +699,10 @@ public class CellBroadcastReceiver extends BroadcastReceiver { Log.d(TAG, msg); } + private static void logd(String msg) { + if (DBG) Log.d(TAG, msg); + } + private static void loge(String msg) { Log.e(TAG, msg); } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java b/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java index 35d418d4b..16bbb691d 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastResources.java @@ -31,7 +31,6 @@ import android.text.style.StyleSpan; import com.android.cellbroadcastreceiver.CellBroadcastChannelManager.CellBroadcastChannelRange; import java.text.DateFormat; -import java.util.ArrayList; import java.util.Locale; /** @@ -313,18 +312,15 @@ public class CellBroadcastResources { context, message.getSubscriptionId()); final int serviceCategory = message.getServiceCategory(); // store to different SMS threads based on channel mappings. - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.cmas_presidential_alerts_channels_range_strings)) { - return R.string.sms_cb_sender_name_presidential; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.emergency_alerts_channels_range_strings)) { - return R.string.sms_cb_sender_name_emergency; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.public_safety_messages_channels_range_strings)) { - return R.string.sms_cb_sender_name_public_safety; + switch (channelManager.getCellBroadcastChannelResourcesKey(serviceCategory)) { + case R.array.cmas_presidential_alerts_channels_range_strings: + return R.string.sms_cb_sender_name_presidential; + case R.array.emergency_alerts_channels_range_strings: + return R.string.sms_cb_sender_name_emergency; + case R.array.public_safety_messages_channels_range_strings: + return R.string.sms_cb_sender_name_public_safety; } + return R.string.sms_cb_sender_name_default; } @@ -356,82 +352,60 @@ public class CellBroadcastResources { CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager( context, subId); final int serviceCategory = message.getServiceCategory(); - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.emergency_alerts_channels_range_strings)) { - return R.string.pws_other_message_identifiers; - } - // CMAS warning types - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.cmas_presidential_alerts_channels_range_strings)) { - return R.string.cmas_presidential_level_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.cmas_alert_extreme_channels_range_strings)) { - if (message.isCmasMessage()) { - if (cmasInfo.getSeverity() == SmsCbCmasInfo.CMAS_SEVERITY_EXTREME - && cmasInfo.getUrgency() == SmsCbCmasInfo.CMAS_URGENCY_IMMEDIATE) { - if (cmasInfo.getCertainty() == SmsCbCmasInfo.CMAS_CERTAINTY_OBSERVED) { - return R.string.cmas_extreme_immediate_observed_alert; - } else if (cmasInfo.getCertainty() == SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY) { - return R.string.cmas_extreme_immediate_likely_alert; + int resourcesKey = channelManager.getCellBroadcastChannelResourcesKey(serviceCategory); + CellBroadcastChannelRange range = channelManager + .getCellBroadcastChannelRange(serviceCategory); + + switch (resourcesKey) { + case R.array.emergency_alerts_channels_range_strings: + return R.string.pws_other_message_identifiers; + case R.array.cmas_presidential_alerts_channels_range_strings: + return R.string.cmas_presidential_level_alert; + case R.array.cmas_alert_extreme_channels_range_strings: + if (message.isCmasMessage()) { + if (cmasInfo.getSeverity() == SmsCbCmasInfo.CMAS_SEVERITY_EXTREME + && cmasInfo.getUrgency() == SmsCbCmasInfo.CMAS_URGENCY_IMMEDIATE) { + if (cmasInfo.getCertainty() == SmsCbCmasInfo.CMAS_CERTAINTY_OBSERVED) { + return R.string.cmas_extreme_immediate_observed_alert; + } else if (cmasInfo.getCertainty() == SmsCbCmasInfo.CMAS_CERTAINTY_LIKELY) { + return R.string.cmas_extreme_immediate_likely_alert; + } } } - } - return R.string.cmas_extreme_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.cmas_alerts_severe_range_strings)) { - return R.string.cmas_severe_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.cmas_amber_alerts_channels_range_strings)) { - return R.string.cmas_amber_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.required_monthly_test_range_strings)) { - return R.string.cmas_required_monthly_test; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.exercise_alert_range_strings)) { - return R.string.cmas_exercise_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.operator_defined_alert_range_strings)) { - return R.string.cmas_operator_defined_alert; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.public_safety_messages_channels_range_strings)) { - return R.string.public_safety_message; - } - if (channelManager.checkCellBroadcastChannelRange(serviceCategory, - R.array.state_local_test_alert_range_strings)) { - return R.string.state_local_test_alert; + return R.string.cmas_extreme_alert; + case R.array.cmas_alerts_severe_range_strings: + return R.string.cmas_severe_alert; + case R.array.cmas_amber_alerts_channels_range_strings: + return R.string.cmas_amber_alert; + case R.array.required_monthly_test_range_strings: + return R.string.cmas_required_monthly_test; + case R.array.exercise_alert_range_strings: + return R.string.cmas_exercise_alert; + case R.array.operator_defined_alert_range_strings: + return R.string.cmas_operator_defined_alert; + case R.array.public_safety_messages_channels_range_strings: + return R.string.public_safety_message; + case R.array.state_local_test_alert_range_strings: + return R.string.state_local_test_alert; } if (channelManager.isEmergencyMessage(message)) { - ArrayList ranges = - channelManager.getCellBroadcastChannelRanges( - R.array.additional_cbs_channels_strings); - if (ranges != null) { - for (CellBroadcastChannelRange range : ranges) { - if (serviceCategory >= range.mStartId && serviceCategory <= range.mEndId) { - // Apply the closest title to the specified tones. - switch (range.mAlertType) { - case DEFAULT: - return R.string.pws_other_message_identifiers; - case ETWS_EARTHQUAKE: - return R.string.etws_earthquake_warning; - case ETWS_TSUNAMI: - return R.string.etws_tsunami_warning; - case TEST: - return R.string.etws_test_message; - case ETWS_DEFAULT: - case OTHER: - return R.string.etws_other_emergency_type; - } - } + if (resourcesKey == R.array.additional_cbs_channels_strings) { + switch (range.mAlertType) { + case DEFAULT: + return R.string.pws_other_message_identifiers; + case ETWS_EARTHQUAKE: + return R.string.etws_earthquake_warning; + case ETWS_TSUNAMI: + return R.string.etws_tsunami_warning; + case TEST: + return R.string.etws_test_message; + case ETWS_DEFAULT: + case OTHER: + return R.string.etws_other_emergency_type; + default: + break; } - } return R.string.pws_other_message_identifiers; } else { @@ -464,18 +438,18 @@ public class CellBroadcastResources { CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager( context, subId); if (channelManager.isEmergencyMessage(message)) { - ArrayList ranges = - channelManager.getCellBroadcastChannelRanges( - R.array.additional_cbs_channels_strings); - for (CellBroadcastChannelRange range : ranges) { - if (serviceCategory >= range.mStartId && serviceCategory <= range.mEndId) { - // Apply the closest title to the specified tones. - switch (range.mAlertType) { - case ETWS_EARTHQUAKE: - return R.drawable.pict_icon_earthquake; - case ETWS_TSUNAMI: - return R.drawable.pict_icon_tsunami; - } + if (channelManager.getCellBroadcastChannelResourcesKey(serviceCategory) + == R.array.additional_cbs_channels_strings) { + CellBroadcastChannelRange range = channelManager + .getCellBroadcastChannelRangeFromMessage(message); + // Apply the closest title to the specified tones. + switch (range.mAlertType) { + case ETWS_EARTHQUAKE: + return R.drawable.pict_icon_earthquake; + case ETWS_TSUNAMI: + return R.drawable.pict_icon_tsunami; + default: + break; } } return -1; diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index a5c9caaca..a7b71a6c9 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -27,12 +27,11 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.content.res.Resources; import android.os.Bundle; -import android.os.PersistableBundle; import android.os.UserManager; import android.os.Vibrator; -import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; @@ -48,7 +47,6 @@ import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; -import com.android.internal.annotations.VisibleForTesting; import com.android.modules.utils.build.SdkLevel; import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity; import com.android.settingslib.widget.MainSwitchPreference; @@ -152,6 +150,9 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { // For watch layout private static final String KEY_WATCH_ALERT_REMINDER = "watch_alert_reminder"; + // For top introduction info + private static final String KEY_PREFS_TOP_INTRO = "alert_prefs_top_intro"; + // Whether to receive alert in second language code public static final String KEY_RECEIVE_CMAS_IN_SECOND_LANGUAGE = "receive_cmas_in_second_language"; @@ -161,6 +162,9 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { // Resource cache private static final Map sResourcesCache = new HashMap<>(); + // Resource cache per operator + private static final Map sResourcesCacheByOperator = new HashMap<>(); + // Intent sent from cellbroadcastreceiver to notify cellbroadcastservice that area info update // is disabled/enabled. private static final String AREA_INFO_UPDATE_ACTION = @@ -326,6 +330,9 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { // on/off switch in settings for receiving alert in second language code private TwoStatePreference mReceiveCmasInSecondLanguageCheckBox; + // Show the top introduction + private Preference mTopIntroPreference; + private final BroadcastReceiver mTestingModeChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -404,6 +411,7 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { mAlertCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_EMERGENCY_ALERTS); } + mTopIntroPreference = findPreference(KEY_PREFS_TOP_INTRO); } @Override @@ -576,8 +584,9 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { private void updatePreferenceVisibility() { Resources res = CellBroadcastSettings.getResourcesForDefaultSubId(getContext()); + // The settings should be based on the config by the subscription CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager( - getContext(), SubscriptionManager.getDefaultSubscriptionId()); + getContext(), SubscriptionManager.getDefaultSubscriptionId(), null); if (mMasterToggle != null) { mMasterToggle.setVisible(res.getBoolean(R.bool.show_main_switch_settings)); @@ -701,6 +710,18 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { || getActivity().getPackageManager() .hasSystemFeature(PackageManager.FEATURE_WATCH)); } + + if (mTopIntroPreference != null) { + mTopIntroPreference.setTitle(getTopIntroduction()); + } + } + + private int getTopIntroduction() { + // Only set specific top introduction for roaming support now + if (!CellBroadcastReceiver.getRoamingOperatorSupported(getContext()).isEmpty()) { + return R.string.top_intro_roaming_text; + } + return R.string.top_intro_default_text; } private void initReminderIntervalList() { @@ -806,9 +827,20 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { } public static boolean isTestAlertsToggleVisible(Context context) { + return isTestAlertsToggleVisible(context, null); + } + + /** + * Check whether test alert toggle is visible + * @param context Context + * @param operator Opeator numeric + */ + public static boolean isTestAlertsToggleVisible(Context context, String operator) { CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager(context, - SubscriptionManager.getDefaultSubscriptionId()); - Resources res = CellBroadcastSettings.getResourcesForDefaultSubId(context); + SubscriptionManager.getDefaultSubscriptionId(), operator); + Resources res = operator == null ? getResourcesForDefaultSubId(context) + : getResourcesByOperator(context, + SubscriptionManager.getDefaultSubscriptionId(), operator); boolean isTestAlertsAvailable = !channelManager.getCellBroadcastChannelRanges( R.array.required_monthly_test_range_strings).isEmpty() || (!channelManager.getCellBroadcastChannelRanges( @@ -870,4 +902,83 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { public static @NonNull Resources getResourcesForDefaultSubId(@NonNull Context context) { return getResources(context, SubscriptionManager.getDefaultSubscriptionId()); } + + /** + * Get the resources per network operator + * @param context Context + * @param operator Opeator numeric + * @return the Resources based on network operator + */ + public static @NonNull Resources getResourcesByOperator( + @NonNull Context context, int subId, @NonNull String operator) { + if (operator == null || operator.isEmpty()) { + return getResources(context, subId); + } + + Resources res = sResourcesCacheByOperator.get(operator); + if (res != null) { + return res; + } + + Configuration overrideConfig = new Configuration(); + try { + int mcc = Integer.parseInt(operator.substring(0, 3)); + int mnc = operator.length() > 3 ? Integer.parseInt(operator.substring(3)) + : Configuration.MNC_ZERO; + + overrideConfig.mcc = mcc; + overrideConfig.mnc = mnc; + } catch (NumberFormatException e) { + // should not happen + Log.e(TAG, "invalid operator: " + operator); + return context.getResources(); + } + + Context newContext = context.createConfigurationContext(overrideConfig); + res = newContext.getResources(); + + sResourcesCacheByOperator.put(operator, res); + return res; + } + + /** + * Get the resources id which is used for the default value of the preference + * @param key the preference key + * @return a valid resources id if the key is valid and the default value is + * defined, otherwise 0 + */ + public static int getResourcesIdForDefaultPrefValue(String key) { + switch (key) { + case KEY_ENABLE_ALERTS_MASTER_TOGGLE: + return R.bool.master_toggle_enabled_default; + case KEY_ENABLE_PUBLIC_SAFETY_MESSAGES: + return R.bool.public_safety_messages_enabled_default; + case KEY_ENABLE_PUBLIC_SAFETY_MESSAGES_FULL_SCREEN: + return R.bool.public_safety_messages_full_screen_enabled_default; + case KEY_ENABLE_EMERGENCY_ALERTS: + return R.bool.emergency_alerts_enabled_default; + case KEY_ENABLE_ALERT_SPEECH: + return R.bool.enable_alert_speech_default; + case KEY_OVERRIDE_DND: + return R.bool.override_dnd_default; + case KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS: + return R.bool.extreme_threat_alerts_enabled_default; + case KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS: + return R.bool.severe_threat_alerts_enabled_default; + case KEY_ENABLE_CMAS_AMBER_ALERTS: + return R.bool.amber_alerts_enabled_default; + case KEY_ENABLE_TEST_ALERTS: + return R.bool.test_alerts_enabled_default; + case KEY_ENABLE_EXERCISE_ALERTS: + return R.bool.test_exercise_alerts_enabled_default; + case KEY_OPERATOR_DEFINED_ALERTS: + return R.bool.test_operator_defined_alerts_enabled_default; + case KEY_ENABLE_STATE_LOCAL_TEST_ALERTS: + return R.bool.state_local_test_alerts_enabled_default; + case KEY_ENABLE_AREA_UPDATE_INFO_ALERTS: + return R.bool.area_update_info_alerts_enabled_default; + default: + return 0; + } + } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertServiceTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertServiceTest.java index 00cd8c930..fb45b88f9 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertServiceTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertServiceTest.java @@ -21,6 +21,7 @@ import static com.android.cellbroadcastreceiver.CellBroadcastAlertService.SHOW_N import static org.junit.Assert.assertArrayEquals; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; @@ -80,6 +81,8 @@ public class CellBroadcastAlertServiceTest extends @Before public void setUp() throws Exception { super.setUp(); + // No roaming supported by default + doReturn("").when(mMockedSharedPreferences).getString(anyString(), anyString()); } @After diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastChannelManagerTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastChannelManagerTest.java index cfd58fa35..f916dd02f 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastChannelManagerTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastChannelManagerTest.java @@ -20,7 +20,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doReturn; +import android.telephony.SmsCbCmasInfo; +import android.telephony.SmsCbLocation; +import android.telephony.SmsCbMessage; import android.telephony.SubscriptionManager; import android.test.suitebuilder.annotation.SmallTest; @@ -35,42 +41,84 @@ import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * APN retry manager tests */ public class CellBroadcastChannelManagerTest extends CellBroadcastTest { + private static final String[] CHANNEL_CONFIG1 = { + "12:type=etws_earthquake, emergency=true, display=false, always_on=true", + "456:type=etws_tsunami, emergency=true, alert_duration=60000, scope=domestic", + "0xAC00-0xAFED:type=other, emergency=false, override_dnd=true, scope=carrier", + "54-60:emergency=true, testing_mode=true, dialog_with_notification=true", + "100-200", + "0xA804:type=test, emergency=true, exclude_from_sms_inbox=true, vibration=0|350|250|350", + "0x111E:debug_build=true"}; + private static final String[] CHANNEL_CONFIG2 = { + "12:type=etws_earthquake, emergency=true, display=true, always_on=false", + "456:type=etws_tsunami, emergency=true, alert_duration=20000, scope=domestic", + "0xAC00-0xAEFF:type=other, emergency=false, override_dnd=true, scope=carrier"}; + private static final String[] CHANNEL_CONFIG3 = { + "0xA804:type=test, emergency=true, exclude_from_sms_inbox=true, vibration=0|350|250|350" + }; + + private static final String OPERATOR = "123456"; + private static final int SUB_ID = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; + + // For SUB1 without roaming support + private CellBroadcastChannelManager mChannelManager1; + // For SUB1 with roaming support of OPERATOR + private CellBroadcastChannelManager mChannelManager2; + @Before public void setUp() throws Exception { super.setUp(getClass().getSimpleName()); + + doReturn(null).when(mTelephonyManager).getServiceState(); + doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt()); + doReturn(mContext).when(mContext).createConfigurationContext(any()); + + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); + // Init mChannelManager1 for SUB1 + putResources(com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings, + CHANNEL_CONFIG1); + mChannelManager1 = new CellBroadcastChannelManager(mContext, SUB_ID, null, false); + + // Init mChannelManager2 for SUB2 and OPERATOR + putResources(com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings, + CHANNEL_CONFIG2); + putResources( + com.android.cellbroadcastreceiver.R.array.emergency_alerts_channels_range_strings, + CHANNEL_CONFIG3); + mChannelManager2 = new CellBroadcastChannelManager(mContext, SUB_ID, OPERATOR, false); } @After public void tearDown() throws Exception { super.tearDown(); + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } @Test @SmallTest public void testGetCellBroadcastChannelRanges() throws Exception { - putResources(com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings, - new String[]{ - "12:type=etws_earthquake, emergency=true, display=false, always_on=true", - "456:type=etws_tsunami, emergency=true, alert_duration=60000, " - + "scope=domestic", "0xAC00-0xAFED:type=other, emergency=false, " - + "override_dnd=true, scope=carrier", "54-60:emergency=true, " - + "testing_mode=true, " + "dialog_with_notification=true", - "100-200", "0xA804:type=test, " - + "emergency=true, exclude_from_sms_inbox=true, vibration=0|350|250|350", - "0x111E:debug_build=true"}); - - CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager(mContext, - SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false); - - ArrayList list = channelManager.getCellBroadcastChannelRanges( + List list = mChannelManager1.getCellBroadcastChannelRanges( + com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings); + + verifyChannelRangesForConfig1(list); + + list = mChannelManager2.getCellBroadcastChannelRanges( com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings); + verifyChannelRangesForConfig2(list); + } + + private void verifyChannelRangesForConfig1(List list) + throws Exception { + assertEquals(6, list.size()); + assertEquals(12, list.get(0).mStartId); assertEquals(12, list.get(0).mEndId); assertEquals(AlertType.ETWS_EARTHQUAKE, list.get(0).mAlertType); @@ -140,7 +188,124 @@ public class CellBroadcastChannelManagerTest extends CellBroadcastTest { assertTrue(Arrays.equals(new int[]{0, 350, 250, 350}, list.get(5).mVibrationPattern)); assertNotEquals(list.get(4).toString(), list.get(5).toString()); assertFalse(list.get(5).mDisplayDialogWithNotification); + } - assertEquals(6, list.size()); + private void verifyChannelRangesForConfig2(List list) + throws Exception { + assertEquals(3, list.size()); + + assertEquals(12, list.get(0).mStartId); + assertEquals(12, list.get(0).mEndId); + assertEquals(AlertType.ETWS_EARTHQUAKE, list.get(0).mAlertType); + assertEquals(CellBroadcastChannelRange.LEVEL_EMERGENCY, list.get(0).mEmergencyLevel); + assertFalse(list.get(0).mAlwaysOn); + assertTrue(list.get(0).mDisplay); + assertFalse(list.get(0).mOverrideDnd); + assertTrue(list.get(0).mWriteToSmsInbox); + assertFalse(list.get(0).mTestMode); + assertFalse(list.get(0).mDisplayDialogWithNotification); + + assertEquals(456, list.get(1).mStartId); + assertEquals(456, list.get(1).mEndId); + assertEquals(AlertType.ETWS_TSUNAMI, list.get(1).mAlertType); + assertEquals(CellBroadcastChannelRange.LEVEL_EMERGENCY, list.get(1).mEmergencyLevel); + assertFalse(list.get(1).mAlwaysOn); + assertTrue(list.get(1).mDisplay); + assertFalse(list.get(1).mOverrideDnd); + assertTrue(list.get(1).mWriteToSmsInbox); + assertFalse(list.get(1).mTestMode); + assertEquals(20000, list.get(1).mAlertDuration); + assertFalse(list.get(1).mDisplayDialogWithNotification); + + assertEquals(0xAC00, list.get(2).mStartId); + assertEquals(0xAEFF, list.get(2).mEndId); + assertEquals(AlertType.OTHER, list.get(2).mAlertType); + assertEquals(CellBroadcastChannelRange.LEVEL_NOT_EMERGENCY, list.get(2).mEmergencyLevel); + assertFalse(list.get(2).mAlwaysOn); + assertTrue(list.get(2).mDisplay); + assertTrue(list.get(2).mOverrideDnd); + assertTrue(list.get(2).mWriteToSmsInbox); + assertFalse(list.get(2).mTestMode); + assertEquals(list.get(2).mScope, CellBroadcastChannelRange.SCOPE_CARRIER); + assertFalse(list.get(2).mDisplayDialogWithNotification); + } + + @Test + @SmallTest + public void testGetCellBroadcastChannelResourcesKey() throws Exception { + assertEquals(mChannelManager1.getCellBroadcastChannelResourcesKey(0xA804), + com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings); + + assertEquals(mChannelManager2.getCellBroadcastChannelResourcesKey(0xA804), + com.android.cellbroadcastreceiver.R.array.emergency_alerts_channels_range_strings); + // It should hit the channel ranges for sub as no config for the operator + assertEquals(mChannelManager2.getCellBroadcastChannelResourcesKey(0xAFED), + com.android.cellbroadcastreceiver.R.array.additional_cbs_channels_strings); + } + + @Test + @SmallTest + public void testGetCellBroadcastChannelRange() throws Exception { + CellBroadcastChannelRange channelRange = mChannelManager1 + .getCellBroadcastChannelRange(0xAC00); + + assertEquals(0xAC00, channelRange.mStartId); + assertEquals(0xAFED, channelRange.mEndId); + + channelRange = mChannelManager2.getCellBroadcastChannelRange(0xAC00); + + assertEquals(0xAC00, channelRange.mStartId); + assertEquals(0xAEFF, channelRange.mEndId); + } + + @Test + @SmallTest + public void testGetAllCellBroadcastChannelRanges() throws Exception { + List ranges = + mChannelManager1.getAllCellBroadcastChannelRanges(); + + verifyChannelRangesForConfig1(ranges); + + ranges = mChannelManager2.getAllCellBroadcastChannelRanges(); + + assertEquals(10, ranges.size()); + verifyChannelRangesForConfig2(new ArrayList<>(ranges).subList(0, 3)); + verifyChannelRangesForConfig1(new ArrayList<>(ranges).subList(4, 10)); + } + + @Test + @SmallTest + public void testGetCellBroadcastChannelRangeFromMessage() throws Exception { + SmsCbMessage msg = createMessageForCmasMessageClass(1, 0xAC00, 0); + + CellBroadcastChannelRange range = mChannelManager1 + .getCellBroadcastChannelRangeFromMessage(msg); + + assertEquals(0xAC00, range.mStartId); + assertEquals(0xAFED, range.mEndId); + + range = mChannelManager2.getCellBroadcastChannelRangeFromMessage(msg); + + assertEquals(0xAC00, range.mStartId); + assertEquals(0xAEFF, range.mEndId); + } + + @Test + @SmallTest + public void testIsEmergencyMessage() throws Exception { + assertFalse(mChannelManager1.isEmergencyMessage(null)); + + SmsCbMessage msg = createMessageForCmasMessageClass(1, 0xA804, 0); + + assertTrue(mChannelManager1.isEmergencyMessage(msg)); + } + + private SmsCbMessage createMessageForCmasMessageClass(int serialNumber, + int serviceCategory, int cmasMessageClass) { + return new SmsCbMessage(1, 2, serialNumber, new SmsCbLocation(), serviceCategory, + "language", "body", + SmsCbMessage.MESSAGE_PRIORITY_EMERGENCY, null, + new SmsCbCmasInfo(cmasMessageClass, 2, 3, 4, 5, 6), + 0, SUB_ID); } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java index 72d802fdc..6d60b8ceb 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java @@ -17,18 +17,24 @@ package com.android.cellbroadcastreceiver.unit; import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.content.SharedPreferences; import android.telephony.SmsCbMessage; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; @@ -62,6 +68,15 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { @Mock SharedPreferences mMockedSharedPreferences; + @Mock + SubscriptionManager mMockSubscriptionManager; + + @Mock + SubscriptionInfo mMockSubscriptionInfo; + + @Mock + Intent mIntent; + private CellBroadcastConfigService mConfigService; @Before @@ -140,20 +155,20 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { TelephonyManager.enableServiceHandleCaching(); } - private void setCellBroadcastRange(int subId, boolean enable, - List ranges) - throws Exception { + private void setCellBroadcastRange(int subId, boolean isEnableOnly, + boolean enable, List ranges) throws Exception { - Class[] cArgs = new Class[3]; + Class[] cArgs = new Class[4]; cArgs[0] = Integer.TYPE; cArgs[1] = Boolean.TYPE; - cArgs[2] = List.class; + cArgs[2] = Boolean.TYPE; + cArgs[3] = List.class; Method method = CellBroadcastConfigService.class.getDeclaredMethod("setCellBroadcastRange", cArgs); method.setAccessible(true); - method.invoke(mConfigService, subId, enable, ranges); + method.invoke(mConfigService, subId, isEnableOnly, enable, ranges); } /** @@ -164,8 +179,8 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { public void testEnableCellBroadcastRange() throws Exception { ArrayList result = new ArrayList<>(); result.add(new CellBroadcastChannelRange(mContext, - SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, "10-20")); - setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, result); + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mResources, "10-20")); + setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false, true, result); ArgumentCaptor captorStart = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor captorEnd = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor captorType = ArgumentCaptor.forClass(Integer.class); @@ -176,6 +191,14 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { assertEquals(10, captorStart.getValue().intValue()); assertEquals(20, captorEnd.getValue().intValue()); assertEquals(1, captorType.getValue().intValue()); + + setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, true, result); + + verify(mMockedSmsService, times(2)).enableCellBroadcastRangeForSubscriber(anyInt(), + captorStart.capture(), captorEnd.capture(), captorType.capture()); + assertEquals(10, captorStart.getValue().intValue()); + assertEquals(20, captorEnd.getValue().intValue()); + assertEquals(1, captorType.getValue().intValue()); } /** @@ -186,8 +209,8 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { public void testDisableCellBroadcastRange() throws Exception { ArrayList result = new ArrayList<>(); result.add(new CellBroadcastChannelRange(mContext, - SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, "10-20")); - setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false, result); + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, mResources, "10-20")); + setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false, false, result); ArgumentCaptor captorStart = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor captorEnd = ArgumentCaptor.forClass(Integer.class); ArgumentCaptor captorType = ArgumentCaptor.forClass(Integer.class); @@ -198,6 +221,11 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { assertEquals(10, captorStart.getValue().intValue()); assertEquals(20, captorEnd.getValue().intValue()); assertEquals(1, captorType.getValue().intValue()); + + setCellBroadcastRange(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, false, result); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber(anyInt(), + captorStart.capture(), captorEnd.capture(), captorType.capture()); } private void setPreference(String pref, boolean value) { @@ -634,4 +662,171 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { eq(SmsCbConstants.MESSAGE_ID_ETWS_OTHER_EMERGENCY_TYPE), eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); } + + /** + * Test handling the intent to enable channels + */ + @Test + @SmallTest + public void testOnHandleIntentActionEnableChannels() throws Exception { + List sl = new ArrayList<>(); + sl.add(mMockSubscriptionInfo); + doReturn(SubscriptionManager.INVALID_SUBSCRIPTION_ID).when( + mMockSubscriptionInfo).getSubscriptionId(); + doReturn(mContext).when(mConfigService).getApplicationContext(); + doReturn(mMockSubscriptionManager).when(mContext).getSystemService(anyString()); + doReturn(sl).when(mMockSubscriptionManager).getActiveSubscriptionInfoList(); + doReturn(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS).when(mIntent).getAction(); + doNothing().when(mConfigService).enableCellBroadcastChannels(anyInt()); + doNothing().when(mConfigService).enableCellBroadcastRoamingChannelsAsNeeded(anyInt()); + + Method method = CellBroadcastConfigService.class.getDeclaredMethod( + "onHandleIntent", new Class[]{Intent.class}); + method.setAccessible(true); + method.invoke(mConfigService, mIntent); + + verify(mConfigService, times(1)).enableCellBroadcastChannels( + eq(SubscriptionManager.INVALID_SUBSCRIPTION_ID)); + verify(mConfigService, times(1)).enableCellBroadcastRoamingChannelsAsNeeded( + eq(SubscriptionManager.INVALID_SUBSCRIPTION_ID)); + } + + /** + * Test enabling cell broadcast roaming channels as needed + */ + @Test + @SmallTest + public void testEnableCellBroadcastRoamingChannelsAsNeeded() throws Exception { + doReturn("").when(mMockedSharedPreferences).getString(anyString(), anyString()); + + mConfigService.enableCellBroadcastRoamingChannelsAsNeeded( + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + //do nothing if operator is empty + verify(mConfigService, never()).getResources(anyInt(), anyString()); + + Context mockContext = mock(Context.class); + doReturn(mResources).when(mockContext).getResources(); + doReturn(mockContext).when(mContext).createConfigurationContext(any()); + doReturn("123").when(mMockedSharedPreferences).getString(anyString(), anyString()); + doReturn(mResources).when(mConfigService).getResources(anyInt(), anyString()); + putResources(com.android.cellbroadcastreceiver.R.bool.master_toggle_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .extreme_threat_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .severe_threat_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool.amber_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool.show_test_settings, true); + putResources(com.android.cellbroadcastreceiver.R.bool.test_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .test_exercise_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .test_operator_defined_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .area_update_info_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .public_safety_messages_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .state_local_test_alerts_enabled_default, true); + putResources(com.android.cellbroadcastreceiver.R.bool + .emergency_alerts_enabled_default, true); + + mConfigService.enableCellBroadcastRoamingChannelsAsNeeded( + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + // should not disable channel + verify(mMockedSmsService, never()).disableCellBroadcastRangeForSubscriber( + anyInt(), anyInt(), anyInt(), anyInt()); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP2)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_EXTREME_THREAT), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_EXTREME_THREAT), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP2)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_SEVERE_THREAT), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_SEVERE_THREAT), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP2)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_CHILD_ABDUCTION_EMERGENCY), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP2)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE), + eq(SmsEnvelope.SERVICE_CATEGORY_CMAS_TEST_MESSAGE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP2)); + + // GSM + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_ETWS_EARTHQUAKE_WARNING), + eq(SmsCbConstants.MESSAGE_ID_ETWS_EARTHQUAKE_AND_TSUNAMI_WARNING), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_ETWS_OTHER_EMERGENCY_TYPE), + eq(SmsCbConstants.MESSAGE_ID_ETWS_OTHER_EMERGENCY_TYPE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PRESIDENTIAL_LEVEL), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_OBSERVED), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_IMMEDIATE_LIKELY), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXTREME_EXPECTED_OBSERVED), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_SEVERE_EXPECTED_LIKELY), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_CHILD_ABDUCTION_EMERGENCY), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_ETWS_TEST_MESSAGE), + eq(SmsCbConstants.MESSAGE_ID_ETWS_TEST_MESSAGE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_OPERATOR_DEFINED_USE), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_OPERATOR_DEFINED_USE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java index 76b37c9e8..8b6377c90 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java @@ -28,6 +28,7 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import android.content.ContentResolver; @@ -43,6 +44,7 @@ import android.os.RemoteException; import android.os.UserManager; import android.provider.Telephony; import android.telephony.CarrierConfigManager; +import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.cdma.CdmaSmsCbProgramData; @@ -470,6 +472,128 @@ public class CellBroadcastReceiverTest extends CellBroadcastTest { mCellBroadcastReceiver.onReceive(mContext, mIntent); } + @Test + public void testOnServiceStateChange() { + mFakeSharedPreferences.putInt("service_state", ServiceState.STATE_OUT_OF_SERVICE); + mFakeSharedPreferences.putString("roaming_operator_supported", ""); + mockTelephonyManager(); + doReturn("android.intent.action.SERVICE_STATE").when(mIntent).getAction(); + doReturn(ServiceState.STATE_IN_SERVICE).when(mIntent).getIntExtra(anyString(), anyInt()); + doReturn(false).when(mMockTelephonyManager).isNetworkRoaming(); + doReturn("123456").when(mMockTelephonyManager).getNetworkOperator(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, never()).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getInt("service_state", ServiceState.STATE_POWER_OFF)) + .isEqualTo(ServiceState.STATE_IN_SERVICE); + + mFakeSharedPreferences.putInt("service_state", ServiceState.STATE_POWER_OFF); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getInt("service_state", ServiceState.STATE_POWER_OFF)) + .isEqualTo(ServiceState.STATE_IN_SERVICE); + } + + + @Test + public void testOnNetworkRoamingChange() { + mFakeSharedPreferences.putInt("service_state", ServiceState.STATE_IN_SERVICE); + mFakeSharedPreferences.putString("roaming_operator_supported", ""); + mockTelephonyManager(); + doReturn("android.intent.action.SERVICE_STATE").when(mIntent).getAction(); + doReturn(ServiceState.STATE_IN_SERVICE).when(mIntent).getIntExtra(anyString(), anyInt()); + doReturn("123456").when(mMockTelephonyManager).getNetworkOperator(); + + // not roaming, verify not to store the network operator, or call enable channel + doReturn(false).when(mMockTelephonyManager).isNetworkRoaming(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, never()).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "123456")).isEqualTo(""); + + // roaming and network operator changed with wild match, verify to + // update the network operator, and call enable channel + doReturn(true).when(mMockTelephonyManager).isNetworkRoaming(); + doReturn(new String[] {"XXXXXX"}).when(mResources).getStringArray(anyInt()); + doReturn("654321").when(mMockTelephonyManager).getSimOperator(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(1)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "")).isEqualTo("123456"); + + // roaming to home case, verify to call enable channel + doReturn(false).when(mMockTelephonyManager).isNetworkRoaming(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(2)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "123456")).isEqualTo(""); + + // roaming and network operator changed with exact mcc match, verify to + // update the network operator, and call enable channel + doReturn(true).when(mMockTelephonyManager).isNetworkRoaming(); + doReturn(new String[] {"123"}).when(mResources).getStringArray(anyInt()); + doReturn("654321").when(mMockTelephonyManager).getSimOperator(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(3)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "")).isEqualTo("123"); + + // roaming to network operator with same mcc and configured as exact mcc match, + // verify to update the network operator, but not call enable channel + doReturn("123654").when(mMockTelephonyManager).getNetworkOperator(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(3)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "")).isEqualTo("123"); + + // roaming and network operator changed with exact match, verify to + // update the network operator, and call enable channel + doReturn(new String[] {"123456"}).when(mResources).getStringArray(anyInt()); + doReturn("123456").when(mMockTelephonyManager).getNetworkOperator(); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(4)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "")).isEqualTo("123456"); + + // roaming to network operator with different mcc and configured as any mcc match, + // verify to update the network operator, and call enable channel + doReturn("321456").when(mMockTelephonyManager).getNetworkOperator(); + doReturn(new String[] {"XXX"}).when(mResources).getStringArray(anyInt()); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(5)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "")).isEqualTo("321"); + + // roaming to network operator which does not match the configuration, + // verify to update the network operator to empty, and call enable channel + doReturn("321456").when(mMockTelephonyManager).getNetworkOperator(); + doReturn(new String[] {"123"}).when(mResources).getStringArray(anyInt()); + + mCellBroadcastReceiver.onReceive(mContext, mIntent); + + verify(mCellBroadcastReceiver, times(6)).startConfigServiceToEnableChannels(); + assertThat(mFakeSharedPreferences.getString( + "roaming_operator_supported", "321")).isEqualTo(""); + } + + @After public void tearDown() throws Exception { super.tearDown(); diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java index 66ae7b10f..2e767feaa 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastServiceTestCase.java @@ -37,7 +37,7 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.test.ServiceTestCase; -import com.android.cellbroadcastreceiver.CellBroadcastSettings; +import com.android.cellbroadcastreceiver.CellBroadcastChannelManager; import com.android.internal.telephony.ISub; import org.junit.After; @@ -173,11 +173,13 @@ public abstract class CellBroadcastServiceTestCase extends Se mContext = new TestContextWrapper(getContext()); setContext(mContext); + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } @After public void tearDown() throws Exception { mMockedServiceManager.restoreAllServices(); + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } void putResources(int id, String[] values) { diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index ca34ac650..f893f8c17 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -33,6 +33,7 @@ import static org.mockito.Mockito.verify; import android.app.Instrumentation; import android.content.Context; import android.content.Intent; +import android.content.res.Configuration; import android.content.res.Resources; import android.os.Looper; import android.os.RemoteException; @@ -52,6 +53,7 @@ import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; @RunWith(AndroidJUnit4.class) public class CellBroadcastSettingsTest extends @@ -201,6 +203,34 @@ public class CellBroadcastSettingsTest extends verify(mockContext2, times(1)).getResources(); } + @Test + public void testGetResourcesByOperator() { + Context mockContext = mock(Context.class); + Resources mockResources = mock(Resources.class); + doReturn(mockResources).when(mockContext).getResources(); + + CellBroadcastSettings.getResourcesByOperator(mockContext, + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, ""); + verify(mockContext, never()).createConfigurationContext(any()); + verify(mockContext, times(1)).getResources(); + + int mcc = 123; + int mnc = 456; + Context mockContext2 = mock(Context.class); + ArgumentCaptor captorConfig = ArgumentCaptor.forClass(Configuration.class); + doReturn(mockResources).when(mockContext2).getResources(); + doReturn(mockContext2).when(mockContext).createConfigurationContext(any()); + + CellBroadcastSettings.getResourcesByOperator(mockContext, + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, + Integer.toString(mcc) + Integer.toString(mnc)); + verify(mockContext, times(1)).getResources(); + verify(mockContext2, times(1)).getResources(); + verify(mockContext, times(1)).createConfigurationContext(captorConfig.capture()); + assertEquals(mcc, captorConfig.getValue().mcc); + assertEquals(mnc, captorConfig.getValue().mnc); + } + public void waitUntilDialogOpens(Runnable r, long maxWaitMs) { long waitTime = 0; while (waitTime < maxWaitMs) { diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java index 54c6329a8..e4c80a32b 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import android.content.Context; +import android.content.SharedPreferences; import android.content.res.Resources; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; @@ -30,6 +31,7 @@ import android.telephony.TelephonyManager; import android.util.Log; import android.util.SparseArray; +import com.android.cellbroadcastreceiver.CellBroadcastChannelManager; import com.android.internal.telephony.ISub; import org.mockito.Mock; @@ -53,10 +55,14 @@ public abstract class CellBroadcastTest { Resources mResources; @Mock ISub.Stub mSubService; + @Mock + SharedPreferences mSharedPreferences; protected void setUp(String tag) throws Exception { TAG = tag; MockitoAnnotations.initMocks(this); + doReturn(mSharedPreferences).when(mContext).getSharedPreferences(anyString(), anyInt()); + doReturn(null).when(mSharedPreferences).getString(anyString(), anyString()); // A hack to return mResources from static method // CellBroadcastSettings.getResources(context). doReturn(mSubService).when(mSubService).queryLocalInterface(anyString()); @@ -70,6 +76,7 @@ public abstract class CellBroadcastTest { SubscriptionManager.disableCaching(); initContext(); + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } private void initContext() { @@ -97,8 +104,13 @@ public abstract class CellBroadcastTest { doReturn(values).when(mResources).getStringArray(eq(id)); } + void putResources(int id, boolean values) { + doReturn(values).when(mResources).getBoolean(eq(id)); + } + protected void tearDown() throws Exception { mMockedServiceManager.restoreAllServices(); + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); } protected static void logd(String s) { -- cgit v1.2.3 From 9b4f899822d55b75e7e0a54d1c0903adeb488fbb Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 17 Nov 2021 07:24:57 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ib1f924521b92819aafaf1441d029a03015c7ba74 --- res/values-hi/strings.xml | 4 ++-- res/values-te/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index f1df23c30..e8b6ec13f 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -47,7 +47,7 @@ "आपातकालीन चेतावनी: बहुत गंभीर" "आपातकालीन अलर्ट: गंभीर" "बच्चे का अपहरण (Amber अलर्ट)" - "हर महीने की जाने वाली ज़रूरी जाँच" + "हर महीने की जाने वाली ज़रूरी जांच" "आपातकालीन अलर्ट (अभ्‍यास)" "आपातकालीन अलर्ट (ऑपरेटर)" "प्रसारण संदेश" @@ -86,7 +86,7 @@ "राज्य और स्थानीय अधिकारियों से टेस्ट मैसेज पाना" "इमरजेंसी के समय सूचनाएं" "ऐसे मामलों के बारे में चेतावनी देना, जिनकी वजह से जान का खतरा हो सकता है" - "जांच करने के लिया भेजी जाने वाली चेतावनियां" + "जांच करने के लिए भेजी जाने वाली चेतावनियां" "सुरक्षा चेतावनी वाले सिस्टम से हर महीने टेस्ट मैसेज पाएं. साथ ही, मोबाइल कैरियर से टेस्ट मैसेज पाएं" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 1ab835d76..20d8ab1fa 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -99,7 +99,7 @@ "ఎల్లప్పుడూ పూర్తి వాల్యూమ్ వద్ద హెచ్చరించు" "అంతరాయం కలిగించవద్దు & ఇతర వాల్యూమ్ సెట్టింగ్‌లను తిరస్కరించండి" "ప్రాంతీయ అప్‌డేట్ ప్రసారాలు" - "SIM స్థితిలో అప్‌డేట్ సమాచారాన్ని చూపు" + "SIM స్టేటస్‌లో అప్‌డేట్ సమాచారాన్ని చూపు" "హెచ్చరిక వర్గం:" "భూభౌతిక సంబంధితం" "వాతావరణ శాస్త్ర సంబంధితం" -- cgit v1.2.3 From af93a04c693cc03d6e06c7a5dae4cd587d6a7cff Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 17 Nov 2021 07:41:41 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I6f6247819da563463a55170303a9baac47a93291 --- res/values-hi/strings.xml | 4 ++-- res/values-te/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index d58488661..20a9eb2e2 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -47,7 +47,7 @@ "आपातकालीन चेतावनी: बहुत गंभीर" "आपातकालीन अलर्ट: गंभीर" "बच्चे का अपहरण (Amber अलर्ट)" - "हर महीने की जाने वाली ज़रूरी जाँच" + "हर महीने की जाने वाली ज़रूरी जांच" "आपातकालीन अलर्ट (अभ्‍यास)" "आपातकालीन अलर्ट (ऑपरेटर)" "प्रसारण संदेश" @@ -86,7 +86,7 @@ "राज्य और स्थानीय अधिकारियों से टेस्ट मैसेज पाना" "इमरजेंसी के समय सूचनाएं" "ऐसे मामलों के बारे में चेतावनी देना, जिनकी वजह से जान का खतरा हो सकता है" - "जांच करने के लिया भेजी जाने वाली चेतावनियां" + "जांच करने के लिए भेजी जाने वाली चेतावनियां" "सुरक्षा चेतावनी वाले सिस्टम से हर महीने टेस्ट मैसेज पाएं. साथ ही, मोबाइल कैरियर से टेस्ट मैसेज पाएं" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 9616fe26c..c035e32d4 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -99,7 +99,7 @@ "ఎల్లప్పుడూ పూర్తి వాల్యూమ్ వద్ద హెచ్చరించు" "అంతరాయం కలిగించవద్దు & ఇతర వాల్యూమ్ సెట్టింగ్‌లను తిరస్కరించండి" "ప్రాంతీయ అప్‌డేట్ ప్రసారాలు" - "SIM స్థితిలో అప్‌డేట్ సమాచారాన్ని చూపు" + "SIM స్టేటస్‌లో అప్‌డేట్ సమాచారాన్ని చూపు" "హెచ్చరిక వర్గం:" "భూభౌతిక సంబంధితం" "వాతావరణ శాస్త్ర సంబంధితం" -- cgit v1.2.3 From d4a0d9007ec906cf727283e37040aa88e753a153 Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Wed, 17 Nov 2021 16:00:28 +0000 Subject: Fix the flaky test for CellBroadcastSettings Add a method to clear the cache of resources, and update the methos to thread safe. As the methods use some static fields to cache the resources, the behavior may be unexpected if any data is cached. So the cache should be cleared before the test. Bug: 206791909 Test: atest CellBroadcastReceiverUnitTests Change-Id: Ia48a4b4935b1f2bda177e53ebc6fb3fb9d8f3094 --- .../CellBroadcastSettings.java | 72 ++++++++++++++-------- .../unit/CellBroadcastSettingsTest.java | 1 + 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index a7b71a6c9..e7422c66b 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -47,6 +47,7 @@ import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; +import com.android.internal.annotations.VisibleForTesting; import com.android.modules.utils.build.SdkLevel; import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity; import com.android.settingslib.widget.MainSwitchPreference; @@ -164,6 +165,7 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { // Resource cache per operator private static final Map sResourcesCacheByOperator = new HashMap<>(); + private static final Object sCacheLock = new Object(); // Intent sent from cellbroadcastreceiver to notify cellbroadcastservice that area info update // is disabled/enabled. @@ -883,14 +885,17 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { return context.getResources(); } - if (sResourcesCache.containsKey(subId)) { - return sResourcesCache.get(subId); - } + synchronized (sCacheLock) { + if (sResourcesCache.containsKey(subId)) { + return sResourcesCache.get(subId); + } + + Resources res = SubscriptionManager.getResourcesForSubId(context, subId); - Resources res = SubscriptionManager.getResourcesForSubId(context, subId); - sResourcesCache.put(subId, res); + sResourcesCache.put(subId, res); - return res; + return res; + } } /** @@ -915,30 +920,32 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { return getResources(context, subId); } - Resources res = sResourcesCacheByOperator.get(operator); - if (res != null) { - return res; - } + synchronized (sCacheLock) { + Resources res = sResourcesCacheByOperator.get(operator); + if (res != null) { + return res; + } - Configuration overrideConfig = new Configuration(); - try { - int mcc = Integer.parseInt(operator.substring(0, 3)); - int mnc = operator.length() > 3 ? Integer.parseInt(operator.substring(3)) - : Configuration.MNC_ZERO; - - overrideConfig.mcc = mcc; - overrideConfig.mnc = mnc; - } catch (NumberFormatException e) { - // should not happen - Log.e(TAG, "invalid operator: " + operator); - return context.getResources(); - } + Configuration overrideConfig = new Configuration(); + try { + int mcc = Integer.parseInt(operator.substring(0, 3)); + int mnc = operator.length() > 3 ? Integer.parseInt(operator.substring(3)) + : Configuration.MNC_ZERO; - Context newContext = context.createConfigurationContext(overrideConfig); - res = newContext.getResources(); + overrideConfig.mcc = mcc; + overrideConfig.mnc = mnc; + } catch (NumberFormatException e) { + // should not happen + Log.e(TAG, "invalid operator: " + operator); + return context.getResources(); + } + + Context newContext = context.createConfigurationContext(overrideConfig); + res = newContext.getResources(); - sResourcesCacheByOperator.put(operator, res); - return res; + sResourcesCacheByOperator.put(operator, res); + return res; + } } /** @@ -981,4 +988,15 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { return 0; } } + + /** + * Reset the resources cache. + */ + @VisibleForTesting + public static void resetResourcesCache() { + synchronized (sCacheLock) { + sResourcesCacheByOperator.clear(); + sResourcesCache.clear(); + } + } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index f893f8c17..106f54218 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -72,6 +72,7 @@ public class CellBroadcastSettingsTest extends mInstrumentation = InstrumentationRegistry.getInstrumentation(); mContext = mInstrumentation.getTargetContext(); mDevice = UiDevice.getInstance(mInstrumentation); + CellBroadcastSettings.resetResourcesCache(); } @InstrumentationTest -- cgit v1.2.3 From f9b7726c3c67e4979463c01e5b57d3d87ef5b9d9 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Wed, 17 Nov 2021 07:44:32 +0000 Subject: Trigger ACTION_ENABLE_CHANNELS on master toggle change Bug: 206014037 Test: Manual Change-Id: Iead2b1a7c4407f48055c97b85edd60c39a332b52 --- .../CellBroadcastSettings.java | 22 ++++++++--- .../unit/CellBroadcastSettingsTest.java | 46 +++++++++++++++++++++- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index e7422c66b..dd6291f03 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -442,6 +442,7 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { setAlertsEnabled(isChecked); + onPreferenceChangedByUser(getContext()); } }; @@ -450,10 +451,6 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference pref, Object newValue) { - CellBroadcastReceiver.startConfigService(pref.getContext(), - CellBroadcastConfigService.ACTION_ENABLE_CHANNELS); - setPreferenceChanged(getContext(), true); - if (mDisableSevereWhenExtremeDisabled) { if (pref.getKey().equals(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS)) { boolean isExtremeAlertChecked = (Boolean) newValue; @@ -470,8 +467,7 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { notifyAreaInfoUpdate(isEnabledAlert); } - // Notify backup manager a backup pass is needed. - new BackupManager(getContext()).dataChanged(); + onPreferenceChangedByUser(getContext()); return true; } }; @@ -826,6 +822,20 @@ public class CellBroadcastSettings extends CollapsingToolbarBaseActivity { LocalBroadcastManager.getInstance(getContext()) .unregisterReceiver(mTestingModeChangedReceiver); } + + /** + * Callback to be called when preference or master toggle is changed by user + * + * @param context Context to use + */ + public void onPreferenceChangedByUser(Context context) { + CellBroadcastReceiver.startConfigService(context, + CellBroadcastConfigService.ACTION_ENABLE_CHANNELS); + setPreferenceChanged(context, true); + + // Notify backup manager a backup pass is needed. + new BackupManager(context).dataChanged(); + } } public static boolean isTestAlertsToggleVisible(Context context) { diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index 106f54218..8cd1a3aab 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -19,6 +19,7 @@ import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; @@ -33,19 +34,23 @@ import static org.mockito.Mockito.verify; import android.app.Instrumentation; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Looper; import android.os.RemoteException; +import android.os.UserManager; import android.support.test.uiautomator.UiDevice; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.test.InstrumentationRegistry; import androidx.test.filters.FlakyTest; import androidx.test.runner.AndroidJUnit4; +import com.android.cellbroadcastreceiver.CellBroadcastConfigService; import com.android.cellbroadcastreceiver.CellBroadcastSettings; import junit.framework.Assert; @@ -54,6 +59,9 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) public class CellBroadcastSettingsTest extends @@ -63,6 +71,17 @@ public class CellBroadcastSettingsTest extends private UiDevice mDevice; private static final long DEVICE_WAIT_TIME = 1000L; + @Captor + private ArgumentCaptor mIntent; + @Mock + private Preference mPreference; + @Mock + private UserManager mUserManager; + @Mock + private SharedPreferences mSharedPreference; + @Mock + private SharedPreferences.Editor mEditor; + public CellBroadcastSettingsTest() { super(CellBroadcastSettings.class); } @@ -72,7 +91,7 @@ public class CellBroadcastSettingsTest extends mInstrumentation = InstrumentationRegistry.getInstrumentation(); mContext = mInstrumentation.getTargetContext(); mDevice = UiDevice.getInstance(mInstrumentation); - CellBroadcastSettings.resetResourcesCache(); + MockitoAnnotations.initMocks(this); } @InstrumentationTest @@ -147,6 +166,31 @@ public class CellBroadcastSettingsTest extends assertTrue(CellBroadcastSettings.hasAnyPreferenceChanged(mContext)); } + @Test + public void testPreferenceChange() { + Context mockContext = mock(Context.class); + Looper.prepare(); + CellBroadcastSettings.CellBroadcastSettingsFragment fragment = + new CellBroadcastSettings.CellBroadcastSettingsFragment(); + doReturn(mUserManager).when(mockContext).getSystemService(Context.USER_SERVICE); + doReturn(true).when(mUserManager).isSystemUser(); + doReturn(mSharedPreference).when(mockContext).getSharedPreferences(anyString(), anyInt()); + doReturn(mEditor).when(mSharedPreference).edit(); + doReturn(mEditor).when(mEditor).putBoolean(anyString(), anyBoolean()); + + fragment.onPreferenceChangedByUser(mockContext); + + verify(mockContext, times(1)).startService(mIntent.capture()); + assertEquals(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, + (String) mIntent.getValue().getAction()); + + doReturn("test_preference").when(mPreference).getKey(); + fragment.onPreferenceChangedByUser(mockContext); + verify(mockContext, times(2)).startService(mIntent.capture()); + assertEquals(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, + (String) mIntent.getValue().getAction()); + } + @Test public void testGetResources() { Context mockContext = mock(Context.class); -- cgit v1.2.3 From ebb1cefc2950eb9d42827e7b265a1aad35fbd8c1 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Fri, 19 Nov 2021 07:08:25 +0000 Subject: Make CollapsingToolbarBaseActivity be collapsed when user scrolls up bottom area of cellbroadcasthistory list is cutoff because CollapsingToolbarBaseActivity is not collapsed Bug: 202812739 Bug: 205692090 Test: Manual Change-Id: I49ef4cd64c3001c094cfb2d6b8c35518b2fe9f7f --- res/layout/cell_broadcast_list_screen.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/layout/cell_broadcast_list_screen.xml b/res/layout/cell_broadcast_list_screen.xml index c895e5fc5..368e74ac1 100644 --- a/res/layout/cell_broadcast_list_screen.xml +++ b/res/layout/cell_broadcast_list_screen.xml @@ -26,6 +26,7 @@ android:layout_height="match_parent" android:drawSelectorOnTop="false" android:scrollbarStyle="insideOverlay" + android:nestedScrollingEnabled="true" android:divider="@null" android:dividerHeight="0dp" /> -- cgit v1.2.3 From 18e4b85fbe7fb227b1b2babf812607fe9de00d5a Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Mon, 22 Nov 2021 15:49:27 +0000 Subject: Remove redundant test codes of CellBroadcastSettingsTest Bug: 206014037 Test: atest com.android.cellbroadcastreceiver.unit.CellBroadcastSettingsTest#testPreferenceChangeByUser Change-Id: I417d245d20666d04fdb576cb4bd86205898424e1 --- .../cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index 8cd1a3aab..23a6be895 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -167,7 +167,7 @@ public class CellBroadcastSettingsTest extends } @Test - public void testPreferenceChange() { + public void testPreferenceChangeByUser() { Context mockContext = mock(Context.class); Looper.prepare(); CellBroadcastSettings.CellBroadcastSettingsFragment fragment = @@ -183,12 +183,6 @@ public class CellBroadcastSettingsTest extends verify(mockContext, times(1)).startService(mIntent.capture()); assertEquals(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, (String) mIntent.getValue().getAction()); - - doReturn("test_preference").when(mPreference).getKey(); - fragment.onPreferenceChangedByUser(mockContext); - verify(mockContext, times(2)).startService(mIntent.capture()); - assertEquals(CellBroadcastConfigService.ACTION_ENABLE_CHANNELS, - (String) mIntent.getValue().getAction()); } @Test -- cgit v1.2.3 From 9d3340efc50ff3fbde7ba31e1d5325f7d49be6f7 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Mon, 1 Nov 2021 16:35:58 +0000 Subject: Change the logic making notification from onStop to onUserLeaveHint Bug: 202918521 Bug: 203714919 Test: Manual Test: atest com.android.cellbroadcastreceiver.unit.CellBroadcastAlertDialogTest Change-Id: I91a826f2cc88e4992bc532d40eed941064d513f4 --- .../android/cellbroadcastreceiver/CellBroadcastAlertDialog.java | 8 +++----- .../unit/CellBroadcastActivityTestCase.java | 9 +++++++++ .../cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertDialog.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertDialog.java index a479d7add..0a124faa1 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertDialog.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertDialog.java @@ -490,8 +490,8 @@ public class CellBroadcastAlertDialog extends Activity { } @Override - protected void onStop() { - Log.d(TAG, "onStop called"); + protected void onUserLeaveHint() { + Log.d(TAG, "onUserLeaveHint called"); // When the activity goes in background (eg. clicking Home button, dismissed by outside // touch if enabled), send notification. // Avoid doing this when activity will be recreated because of orientation change or if @@ -507,9 +507,7 @@ public class CellBroadcastAlertDialog extends Activity { CellBroadcastAlertService.addToNotificationBar(latestMessage, messageList, getApplicationContext(), true, true, false); } - // Do not stop the audio here. Pressing power button should turn off screen but should not - // interrupt the audio/vibration - super.onStop(); + super.onUserLeaveHint(); } @Override diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java index 6e8b2a70d..4af6cc2f0 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastActivityTestCase.java @@ -72,6 +72,15 @@ public class CellBroadcastActivityTestCase extends ActivityU }); } + protected void leaveActivity() throws Throwable { + runTestOnUiThread(new Runnable() { + @Override + public void run() { + getInstrumentation().callActivityOnUserLeaving(mActivity); + } + }); + } + public static void waitForMs(long ms) { try { Thread.sleep(ms); diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java index e314e29d1..acca9afe1 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastAlertDialogTest.java @@ -168,7 +168,7 @@ public class CellBroadcastAlertDialogTest extends public void testAddToNotification() throws Throwable { startActivity(); waitForMs(100); - stopActivity(); + leaveActivity(); waitForMs(100); verify(mMockedNotificationManager, times(1)).notify(mInt.capture(), mNotification.capture()); -- cgit v1.2.3 From beef27dd5c8767dc570025d3fdfdade640661651 Mon Sep 17 00:00:00 2001 From: youngtaecha Date: Tue, 23 Nov 2021 11:13:09 +0000 Subject: Support auto cancel for notification of setting changed Bug: 207203770 Test: Manual Change-Id: I74b72e4345e181671f5cac1203808669b27e7bab --- src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index d00eef825..29f00243f 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -113,7 +113,8 @@ public class CellBroadcastConfigService extends IntentService { .setContentTitle(c.getString(R.string.notification_cb_settings_changed_title)) .setContentText(c.getString(R.string.notification_cb_settings_changed_text)) .setSmallIcon(R.drawable.ic_settings_gear_outline_24dp) - .setContentIntent(pi); + .setContentIntent(pi) + .setAutoCancel(true); NotificationManager notificationManager = c.getSystemService( NotificationManager.class); notificationManager.notify( -- cgit v1.2.3 From 0a1db188f487bae2c764ddb205c0508aed6ba851 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Thu, 18 Nov 2021 05:43:05 +0000 Subject: Support the latest requirement of Qatar - String/Translation changes - Hiding menu items - Update default setting value - Update audio behavior - Roaming support Bug: 204524777 Test: Manual Change-Id: Ic198e63ee62747a9d9d813f95d4bb3d0271784bd --- res/values-mcc427/config.xml | 33 ++++++++++++++++++++++------ res/values-mcc427/strings.xml | 50 +++++++++++++++++++++++++++++++++++++++++++ res/values/config.xml | 2 ++ 3 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 res/values-mcc427/strings.xml diff --git a/res/values-mcc427/config.xml b/res/values-mcc427/config.xml index 381ebc1bf..f3fd36ca6 100644 --- a/res/values-mcc427/config.xml +++ b/res/values-mcc427/config.xml @@ -15,18 +15,39 @@ --> - + + + 0x111C:type=info, rat=gsm, emergency=true + + 0x1129:type=info, rat=gsm, emergency=true + + - 0x112C:rat=gsm, emergency=true + 0x112C:type=info, rat=gsm, emergency=true - 0x112D:rat=gsm, emergency=true + 0x112D:type=info, rat=gsm, emergency=true - + - 0x112E:rat=gsm, emergency=true + 0x112E:type=info, rat=gsm, emergency=true - 0x112F:rat=gsm, emergency=true + 0x112F:type=info, rat=gsm, emergency=true + + + false + + false + + false + + false + + true + + true + + true diff --git a/res/values-mcc427/strings.xml b/res/values-mcc427/strings.xml new file mode 100644 index 000000000..a4943c1fd --- /dev/null +++ b/res/values-mcc427/strings.xml @@ -0,0 +1,50 @@ + + + + + + National Emergency Alert + + Show an opt-out dialog after displaying the first alert (other than National alert). + + National Emergency Alerts + + Emergency Alert + + Emergency Alert + + Emergency Alert + + Emergency Alert + + Warning Alert + + Test Alert + + Exercise + + Public Safety Alert + + Test Alert + + + Warning alerts + + Public safety alerts + + Test alerts + diff --git a/res/values/config.xml b/res/values/config.xml index ffc722a81..9e65a6f87 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -188,6 +188,8 @@ 208 + + 427 + + es + + + 0x1112:rat=gsm, emergency=true, always_on=true + 0x1000:rat=cdma, emergency=true, always_on=true + + 0x111F:rat=gsm, emergency=true, filter_language=true, always_on=true + + + + 0x1113-0x1114:rat=gsm, emergency=true + 0x1001:rat=cdma, emergency=true + + 0x1120-0x1121:rat=gsm, emergency=true, filter_language=true + + + + 0x1115-0x111A:rat=gsm, emergency=true + 0x1002:rat=cdma, emergency=true + + 0x1122-0x1127:rat=gsm, emergency=true, filter_language=true + + + + 0x111B:rat=gsm, emergency=true + 0x1003:rat=cdma, emergency=true + + 0x1128:rat=gsm, emergency=true, filter_language=true + + + + 0x111C:rat=gsm, emergency=true + 0x1004:rat=cdma, emergency=true + + 0x1129:rat=gsm, emergency=true, filter_language=true + + + 0x111D:rat=gsm, emergency=true + + 0x112A:rat=gsm, emergency=true, filter_language=true + + + 0x111E:rat=gsm, emergency=true + + 0x112B:rat=gsm, emergency=true, filter_language=true + 0x112C:rat=gsm, emergency=true - 0x112D:rat=gsm, emergency=true + 0x112D:rat=gsm, emergency=true, filter_language=true 0x112E:rat=gsm, emergency=true - 0x112F:rat=gsm, emergency=true + 0x112F:rat=gsm, emergency=true, filter_language=true 0x1130:rat=gsm, emergency=true + legacy_linkify @@ -43,17 +91,9 @@ true - - + + true - + true - - - MMM dd, HH:mm a - - false -- cgit v1.2.3 From b4addb2414c8f2ba432b9d0b94e5ceb3b60453ae Mon Sep 17 00:00:00 2001 From: youngtaecha Date: Fri, 26 Nov 2021 04:46:55 +0000 Subject: Block test-mode on mcc440-mnc20(Softbank) Bug: 205920270 Test: Manual Test: atest com.android.cellbroadcastreceiver.unit.CellBroadcastReceiverTest Change-Id: I7d14db7b9b2d70d513a6a461a269e507adeaaadd --- res/values-mcc440-mnc20/config.xml | 1 + .../cellbroadcastreceiver/CellBroadcastReceiver.java | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/res/values-mcc440-mnc20/config.xml b/res/values-mcc440-mnc20/config.xml index 36ff9556a..ee877aa10 100644 --- a/res/values-mcc440-mnc20/config.xml +++ b/res/values-mcc440-mnc20/config.xml @@ -28,4 +28,5 @@ false + false diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index ae45c0e92..e4a114b1f 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -178,14 +178,17 @@ public class CellBroadcastReceiver extends BroadcastReceiver { // rename registered notification channels on locale change CellBroadcastAlertService.createNotificationChannels(mContext); } else if (TelephonyManager.ACTION_SECRET_CODE.equals(action)) { - setTestingMode(!isTestingMode(mContext)); - int msgId = (isTestingMode(mContext)) ? R.string.testing_mode_enabled - : R.string.testing_mode_disabled; - String msg = res.getString(msgId); - Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); - LocalBroadcastManager.getInstance(mContext) - .sendBroadcast(new Intent(ACTION_TESTING_MODE_CHANGED)); - log(msg); + if (SystemProperties.getInt("ro.debuggable", 0) == 1 + || res.getBoolean(R.bool.allow_testing_mode_on_user_build)) { + setTestingMode(!isTestingMode(mContext)); + int msgId = (isTestingMode(mContext)) ? R.string.testing_mode_enabled + : R.string.testing_mode_disabled; + String msg = res.getString(msgId); + Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); + LocalBroadcastManager.getInstance(mContext) + .sendBroadcast(new Intent(ACTION_TESTING_MODE_CHANGED)); + log(msg); + } } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { new CellBroadcastContentProvider.AsyncCellBroadcastTask( mContext.getContentResolver()).execute((CellBroadcastContentProvider -- cgit v1.2.3 From 7c81d377546e7a25fba75c1ea35d27a7ff365302 Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Wed, 1 Dec 2021 03:00:30 +0000 Subject: Add new SettingsLib dependency to OemUnitTests Bug: 207724638 Test: make Change-Id: Ifdf51038a1632fcf9c03d52dce550a6754d08fc5 --- tests/unit/Android.bp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp index 27d4f24f9..a9f8d76df 100644 --- a/tests/unit/Android.bp +++ b/tests/unit/Android.bp @@ -69,6 +69,7 @@ android_test { "SettingsLibSettingsTheme", "SettingsLibCollapsingToolbarBaseActivity", "SettingsLibMainSwitchPreference", + "SettingsLibTopIntroPreference", "modules-utils-build_system", ], min_sdk_version: "30", -- cgit v1.2.3 From 2404813e23a02d1f2db4ba526a703c57930ddfb4 Mon Sep 17 00:00:00 2001 From: youngtaecha Date: Wed, 1 Dec 2021 14:30:28 +0000 Subject: Reset ResourcesCache for OemUnitTests Bug: 208614848 Test: atest CellBroadcastReceiverOemUnitTests Change-Id: Ib1161f3c0a06cbebaf5301034caaa9dc25eef7a2 --- .../android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java index 23a6be895..c20d36560 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastSettingsTest.java @@ -92,6 +92,7 @@ public class CellBroadcastSettingsTest extends mContext = mInstrumentation.getTargetContext(); mDevice = UiDevice.getInstance(mInstrumentation); MockitoAnnotations.initMocks(this); + CellBroadcastSettings.resetResourcesCache(); } @InstrumentationTest -- cgit v1.2.3 From 8fb4fb3cb47f9137a91f6562876340643587eb21 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 7 Dec 2021 02:14:26 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I57863315c8c32d49c409d2e391db82bd0ad3a86b --- res/values-ky/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 668dcff40..bb8efbc2c 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -99,7 +99,7 @@ "Эскертүү ар дайым катуу ойнотулсун" "\"Тынчымды алба\" жана үн көлөмүнүн башка жөндөөлөрүн этибарга албоо" "Аймакты жаңыртуу боюнча таркатмалар" - "SIM-картанын абалы тууралуу жаңыртылган маалымат көрүнсүн" + "SIM-картанын абалы тууралуу жаңырган маалымат көрүнсүн" "Шашылыш билдирүүнүн категориясы:" "Геофизакалык" "Метеорологиялык" -- cgit v1.2.3 From 09d8b7bfca3d4ac7bfd0e75961f77c9ed3faaa5d Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 7 Dec 2021 01:56:29 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE BUG:204524777 Auto-generated-cl: translation import Change-Id: I6218d3427740b5b0762ea284b918e4a9200c945a --- res/values-af/strings.xml | 2 ++ res/values-am/strings.xml | 2 ++ res/values-ar/strings.xml | 2 ++ res/values-as/strings.xml | 2 ++ res/values-az/strings.xml | 2 ++ res/values-b+sr+Latn/strings.xml | 2 ++ res/values-be/strings.xml | 2 ++ res/values-bg/strings.xml | 2 ++ res/values-bn/strings.xml | 2 ++ res/values-bs/strings.xml | 2 ++ res/values-ca/strings.xml | 2 ++ res/values-cs/strings.xml | 2 ++ res/values-da/strings.xml | 2 ++ res/values-de/strings.xml | 2 ++ res/values-el/strings.xml | 2 ++ res/values-en-rAU/strings.xml | 2 ++ res/values-en-rCA/strings.xml | 2 ++ res/values-en-rGB/strings.xml | 2 ++ res/values-en-rIN/strings.xml | 2 ++ res/values-en-rXC/strings.xml | 2 ++ res/values-es-rUS/strings.xml | 2 ++ res/values-es/strings.xml | 2 ++ res/values-et/strings.xml | 2 ++ res/values-eu/strings.xml | 2 ++ res/values-fa/strings.xml | 2 ++ res/values-fi/strings.xml | 2 ++ res/values-fr-rCA/strings.xml | 2 ++ res/values-fr/strings.xml | 2 ++ res/values-gl/strings.xml | 2 ++ res/values-gu/strings.xml | 2 ++ res/values-hi/strings.xml | 2 ++ res/values-hr/strings.xml | 2 ++ res/values-hu/strings.xml | 2 ++ res/values-hy/strings.xml | 2 ++ res/values-in/strings.xml | 2 ++ res/values-is/strings.xml | 2 ++ res/values-it/strings.xml | 2 ++ res/values-iw/strings.xml | 2 ++ res/values-ja/strings.xml | 2 ++ res/values-ka/strings.xml | 2 ++ res/values-kk/strings.xml | 2 ++ res/values-km/strings.xml | 2 ++ res/values-kn/strings.xml | 2 ++ res/values-ko/strings.xml | 2 ++ res/values-ky/strings.xml | 4 +++- res/values-lo/strings.xml | 2 ++ res/values-lt/strings.xml | 2 ++ res/values-lv/strings.xml | 2 ++ res/values-mcc427-af/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-am/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ar/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-as/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-az/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-b+sr+Latn/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-be/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-bg/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-bn/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-bs/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ca/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-cs/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-da/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-de/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-el/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-en-rAU/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-en-rCA/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-en-rGB/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-en-rIN/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-en-rXC/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-es-rUS/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-es/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-et/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-eu/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-fa/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-fi/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-fr-rCA/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-fr/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-gl/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-gu/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-hi/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-hr/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-hu/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-hy/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-in/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-is/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-it/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-iw/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ja/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ka/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-kk/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-km/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-kn/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ko/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ky/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-lo/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-lt/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-lv/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-mk/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ml/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-mn/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-mr/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ms/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-my/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-nb/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ne/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-nl/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-or/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-pa/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-pl/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-pt-rPT/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-pt/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ro/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ru/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-si/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sk/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sl/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sq/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sr/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sv/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-sw/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ta/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-te/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-th/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-tl/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-tr/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-uk/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-ur/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-uz/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-vi/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-zh-rCN/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-zh-rHK/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-zh-rTW/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mcc427-zu/strings.xml | 34 +++++++++++++++++++++++++++++++++ res/values-mk/strings.xml | 2 ++ res/values-ml/strings.xml | 2 ++ res/values-mn/strings.xml | 2 ++ res/values-mr/strings.xml | 2 ++ res/values-ms/strings.xml | 2 ++ res/values-my/strings.xml | 2 ++ res/values-nb/strings.xml | 2 ++ res/values-ne/strings.xml | 2 ++ res/values-nl/strings.xml | 2 ++ res/values-or/strings.xml | 2 ++ res/values-pa/strings.xml | 2 ++ res/values-pl/strings.xml | 2 ++ res/values-pt-rPT/strings.xml | 2 ++ res/values-pt/strings.xml | 2 ++ res/values-ro/strings.xml | 2 ++ res/values-ru/strings.xml | 2 ++ res/values-si/strings.xml | 2 ++ res/values-sk/strings.xml | 2 ++ res/values-sl/strings.xml | 2 ++ res/values-sq/strings.xml | 2 ++ res/values-sr/strings.xml | 2 ++ res/values-sv/strings.xml | 2 ++ res/values-sw/strings.xml | 2 ++ res/values-ta/strings.xml | 2 ++ res/values-te/strings.xml | 2 ++ res/values-th/strings.xml | 2 ++ res/values-tl/strings.xml | 2 ++ res/values-tr/strings.xml | 2 ++ res/values-uk/strings.xml | 2 ++ res/values-ur/strings.xml | 2 ++ res/values-uz/strings.xml | 2 ++ res/values-vi/strings.xml | 2 ++ res/values-zh-rCN/strings.xml | 2 ++ res/values-zh-rHK/strings.xml | 2 ++ res/values-zh-rTW/strings.xml | 2 ++ res/values-zu/strings.xml | 2 ++ 168 files changed, 3025 insertions(+), 1 deletion(-) create mode 100644 res/values-mcc427-af/strings.xml create mode 100644 res/values-mcc427-am/strings.xml create mode 100644 res/values-mcc427-ar/strings.xml create mode 100644 res/values-mcc427-as/strings.xml create mode 100644 res/values-mcc427-az/strings.xml create mode 100644 res/values-mcc427-b+sr+Latn/strings.xml create mode 100644 res/values-mcc427-be/strings.xml create mode 100644 res/values-mcc427-bg/strings.xml create mode 100644 res/values-mcc427-bn/strings.xml create mode 100644 res/values-mcc427-bs/strings.xml create mode 100644 res/values-mcc427-ca/strings.xml create mode 100644 res/values-mcc427-cs/strings.xml create mode 100644 res/values-mcc427-da/strings.xml create mode 100644 res/values-mcc427-de/strings.xml create mode 100644 res/values-mcc427-el/strings.xml create mode 100644 res/values-mcc427-en-rAU/strings.xml create mode 100644 res/values-mcc427-en-rCA/strings.xml create mode 100644 res/values-mcc427-en-rGB/strings.xml create mode 100644 res/values-mcc427-en-rIN/strings.xml create mode 100644 res/values-mcc427-en-rXC/strings.xml create mode 100644 res/values-mcc427-es-rUS/strings.xml create mode 100644 res/values-mcc427-es/strings.xml create mode 100644 res/values-mcc427-et/strings.xml create mode 100644 res/values-mcc427-eu/strings.xml create mode 100644 res/values-mcc427-fa/strings.xml create mode 100644 res/values-mcc427-fi/strings.xml create mode 100644 res/values-mcc427-fr-rCA/strings.xml create mode 100644 res/values-mcc427-fr/strings.xml create mode 100644 res/values-mcc427-gl/strings.xml create mode 100644 res/values-mcc427-gu/strings.xml create mode 100644 res/values-mcc427-hi/strings.xml create mode 100644 res/values-mcc427-hr/strings.xml create mode 100644 res/values-mcc427-hu/strings.xml create mode 100644 res/values-mcc427-hy/strings.xml create mode 100644 res/values-mcc427-in/strings.xml create mode 100644 res/values-mcc427-is/strings.xml create mode 100644 res/values-mcc427-it/strings.xml create mode 100644 res/values-mcc427-iw/strings.xml create mode 100644 res/values-mcc427-ja/strings.xml create mode 100644 res/values-mcc427-ka/strings.xml create mode 100644 res/values-mcc427-kk/strings.xml create mode 100644 res/values-mcc427-km/strings.xml create mode 100644 res/values-mcc427-kn/strings.xml create mode 100644 res/values-mcc427-ko/strings.xml create mode 100644 res/values-mcc427-ky/strings.xml create mode 100644 res/values-mcc427-lo/strings.xml create mode 100644 res/values-mcc427-lt/strings.xml create mode 100644 res/values-mcc427-lv/strings.xml create mode 100644 res/values-mcc427-mk/strings.xml create mode 100644 res/values-mcc427-ml/strings.xml create mode 100644 res/values-mcc427-mn/strings.xml create mode 100644 res/values-mcc427-mr/strings.xml create mode 100644 res/values-mcc427-ms/strings.xml create mode 100644 res/values-mcc427-my/strings.xml create mode 100644 res/values-mcc427-nb/strings.xml create mode 100644 res/values-mcc427-ne/strings.xml create mode 100644 res/values-mcc427-nl/strings.xml create mode 100644 res/values-mcc427-or/strings.xml create mode 100644 res/values-mcc427-pa/strings.xml create mode 100644 res/values-mcc427-pl/strings.xml create mode 100644 res/values-mcc427-pt-rPT/strings.xml create mode 100644 res/values-mcc427-pt/strings.xml create mode 100644 res/values-mcc427-ro/strings.xml create mode 100644 res/values-mcc427-ru/strings.xml create mode 100644 res/values-mcc427-si/strings.xml create mode 100644 res/values-mcc427-sk/strings.xml create mode 100644 res/values-mcc427-sl/strings.xml create mode 100644 res/values-mcc427-sq/strings.xml create mode 100644 res/values-mcc427-sr/strings.xml create mode 100644 res/values-mcc427-sv/strings.xml create mode 100644 res/values-mcc427-sw/strings.xml create mode 100644 res/values-mcc427-ta/strings.xml create mode 100644 res/values-mcc427-te/strings.xml create mode 100644 res/values-mcc427-th/strings.xml create mode 100644 res/values-mcc427-tl/strings.xml create mode 100644 res/values-mcc427-tr/strings.xml create mode 100644 res/values-mcc427-uk/strings.xml create mode 100644 res/values-mcc427-ur/strings.xml create mode 100644 res/values-mcc427-uz/strings.xml create mode 100644 res/values-mcc427-vi/strings.xml create mode 100644 res/values-mcc427-zh-rCN/strings.xml create mode 100644 res/values-mcc427-zh-rHK/strings.xml create mode 100644 res/values-mcc427-zh-rTW/strings.xml create mode 100644 res/values-mcc427-zu/strings.xml diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index aadfbddb1..aac662f75 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -167,6 +167,8 @@ "Maksimum wagtyd:" "sekondes" "Boodskap is gekopieer" + + "Terwyl jy swerf, kan jy dalk \'n paar opletberigte kry wat nie by hierdie instellings ingesluit is nie" "Instellings is deur diensverskaffer verander" "Tik om draadlose noodwaarskuwinginstellings te sien" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index cebff351e..05ca1c424 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -167,6 +167,8 @@ "ከፍተኛ የመጠበቂያ ጊዜ፦" "ሰከንዶች" "መልዕክት ተቀድቷል" + + "በማዛወር ላይ እያሉ፣ በእነዚህ ቅንብሮች ውስጥ ያልተካተቱ አንዳንድ ማንቂያዎችን ሊያገኙ ይችላሉ" "ቅንብሮች በአገልግሎት አቅራቢ ተቀይረዋል" "ገመድ-አልባ የድንገተኛ አደጋ ማንቂያ ቅንብሮችን ለማየት መታ ያድርጉ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index c8564de26..e5e1bc1c3 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -167,6 +167,8 @@ "الحد الأقصى لوقت الانتظار:" "ثوانٍ" "تم نسخ الرسالة." + + "أثناء التجوال، يمكن أن تتلقّى بعض التنبيهات غير المضمَّنة في هذه الإعدادات." "غيّر مشغّل شبكة الجوّال الإعدادات." "انقر لعرض إعدادات التنبيهات اللاسلكية لحالات الطوارئ." diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index e99b24815..4141bcb11 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -167,6 +167,8 @@ "অপেক্ষা কৰাৰ সর্বাধিক সময়:" "ছেকেণ্ড" "বাৰ্তা প্ৰতিলিপি কৰা হ\'ল" + + "আপুনি ৰ’মিঙত থাকোঁতে এনে কিছু সতৰ্কবাণী লাভ কৰিব পাৰে যিবোৰ এই ছেটিংসমূহত অন্তৰ্ভুক্ত কৰা হোৱা নাই" "বাহকে ছেটিং সলনি কৰিছে" "অনাতাঁৰ জৰুৰীকালীন সতৰ্কবাৰ্তাৰ ছেটিং চাবলৈ টিপক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 28d810787..367eeee31 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -167,6 +167,8 @@ "Maksimum gözləmə vaxtı:" "saniyə" "Mesaj kopyalandı" + + "Rouminqdə olarkən bu ayarlara daxil olmayan bəzi xəbərdarlıqlar ala bilərsiniz" "Ayarlar operator tərəfindən dəyişdirilib" "Simsiz fövqəladə siqnal ayarlarına baxmaq üçün toxunun" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 18ee886bf..95b43fd2d 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -167,6 +167,8 @@ "Maksimalno vreme čekanja:" "sek" "Poruka je kopirana" + + "Dok ste u romingu možete da dobijate neka obaveštenja koja nisu obuhvaćena ovim podešavanjima" "Mobilni operater je promenio podešavanja" "Dodirnite da biste videli podešavanja bežičnih upozorenja o hitnim slučajevima" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 0f6239eb8..ba6d72021 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -167,6 +167,8 @@ "Максімальна дапушчальны час чакання:" "секунды" "Паведамленне скапіравана" + + "Знаходзячыся ў роўмінгу, вы можаце атрымліваць абвесткі, не ўключаныя ў гэтых наладах" "Налады зменены аператарам" "Націсніце, каб убачыць налады бесправаднога экстраннага апавяшчэння" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 9d4246bc4..8ac507724 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -167,6 +167,8 @@ "Максимално време за изчакване:" "секунди" "Съобщението бе копирано" + + "Докато сте в роуминг, може да получите някои сигнали, които не са включени в тези настройки" "Настройките са променени от оператора" "Докоснете, за да видите настройките за безжичните сигнали при спешни случаи" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 180ed11ca..614149dd4 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -167,6 +167,8 @@ "অপেক্ষা করার সর্বাধিক সময়:" "সেকেন্ড" "মেসেজ কপি করা হয়েছে" + + "রোমিংয়ে থাকলে, আপনাকে হয়ত এমন কিছু সতর্কতা মূলক বিজ্ঞপ্তি পাঠানো হবে যা এই সেটিংসের অন্তর্ভুক্ত নয়" "পরিষেবা প্রদানকারীর দ্বারা সেটিংস পরিবর্তন করা হয়েছে" "ওয়্যারলেস জরুরী সতর্কতা সেটিংস দেখার জন্য ট্যাপ করুন" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index dcf13976c..31f2613b8 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -167,6 +167,8 @@ "Maksimalno vrijeme čekanja:" "sekunde" "Poruka je kopirana" + + "Dok ste u romingu, možete dobiti neka obavještenja koja nisu uključena u ove postavke" "Postavke je promijenio mobilni operater" "Dodirnite da vidite postavke hitnih upozorenja putem bežične mreže" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 64f929375..15effb42c 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -167,6 +167,8 @@ "Temps màxim d\'espera:" "segons" "El missatge s\'ha copiat" + + "Mentre utilitzes la itinerància, és possible que rebis algunes alertes que no s\'inclouen en aquesta configuració" "L\'operador ha canviat la configuració" "Toca per veure la configuració de les alertes d\'emergència sense fil" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index c11308b7a..ef4a24f6c 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -167,6 +167,8 @@ "Maximální čas čekání:" "sekundy" "Zpráva byla zkopírována" + + "Při roamingu se vám mohou zobrazovat upozornění, která se v těchto nastaveních nenachází" "Nastavení byla změněna operátorem" "Klepnutím zobrazíte nastavení bezdrátových upozornění v nouzi" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 1796bba77..78392a597 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -167,6 +167,8 @@ "Maksimal ventetid:" "sekunder" "Beskeden blev kopieret" + + "Når du roamer, får du muligvis nogle underretninger, der ikke er inkluderet i disse indstillinger" "Nogle indstillinger er blevet ændret af mobilselskabet" "Tryk for at se indstillingerne for det trådløse advarselssystem" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 76717dcc5..36c3b48a8 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -167,6 +167,8 @@ "Maximale Wartezeit:" "Sekunden" "Nachricht kopiert" + + "Während des Roamings erhältst du möglicherweise einige Benachrichtigungen, die nicht in diesen Einstellungen enthalten sind" "Einstellungen vom Mobilfunkanbieter geändert" "Tippen, um Einstellungen für Notfallbenachrichtigungen für Mobilgeräte zu sehen" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index afa489288..d468fc24e 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -167,6 +167,8 @@ "Μέγιστος χρόνος αναμονής:" "δευτερόλεπτα" "Το μήνυμα αντιγράφηκε" + + "Όταν περιηγείστε, μπορεί να λάβετε ορισμένες ειδοποιήσεις που δεν περιλαμβάνονται σε αυτές τις ρυθμίσεις" "Η εταιρεία κινητής τηλεφωνίας άλλαξε τις ρυθμίσεις" "Πατήστε για να δείτε τις ρυθμίσεις ασύρματων ειδοποιήσεων έκτακτης ανάγκης." diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 8bed255dc..a2e7876fb 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -167,6 +167,8 @@ "Maximum waiting time:" "seconds" "Message copied" + + "While you\'re roaming, you may get some alerts that aren\'t included in these settings" "Settings changed by operator" "Tap to see wireless emergency alert settings" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 8bed255dc..a2e7876fb 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -167,6 +167,8 @@ "Maximum waiting time:" "seconds" "Message copied" + + "While you\'re roaming, you may get some alerts that aren\'t included in these settings" "Settings changed by operator" "Tap to see wireless emergency alert settings" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 8bed255dc..a2e7876fb 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -167,6 +167,8 @@ "Maximum waiting time:" "seconds" "Message copied" + + "While you\'re roaming, you may get some alerts that aren\'t included in these settings" "Settings changed by operator" "Tap to see wireless emergency alert settings" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 8bed255dc..a2e7876fb 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -167,6 +167,8 @@ "Maximum waiting time:" "seconds" "Message copied" + + "While you\'re roaming, you may get some alerts that aren\'t included in these settings" "Settings changed by operator" "Tap to see wireless emergency alert settings" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index a7b11e555..f2b8c3354 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -167,6 +167,8 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‎Maximum waiting time:‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‎seconds‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎Message copied‎‏‎‎‏‎" + + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‎‎While you\'re roaming, you may get some alerts that aren\'t included in these settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎Settings changed by carrier‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‏‎Tap to see wireless emergency alert settings‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 7db5c44b6..24fc41b09 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -167,6 +167,8 @@ "Tiempo máximo de espera:" "segundos" "Se copió el mensaje" + + "Es posible que mientras uses el roaming, recibas algunas alertas no incluidas en esta configuración" "El proveedor cambió la configuración" "Presiona para ver la configuración de alertas de emergencia inalámbricas" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 74f557820..e62e85746 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -167,6 +167,8 @@ "Tiempo máximo de espera:" "segundos" "Se ha copiado el mensaje" + + "Si tienes activado el roaming, es posible que recibas algunas alertas que no se incluyen en estos ajustes" "Ajustes cambiados por el operador" "Toca para ver los ajustes de las alertas de emergencia inalámbricas" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 09ca771a9..374fa6614 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -167,6 +167,8 @@ "Maksimaalne ooteaeg:" "sekundit" "Sõnum on kopeeritud" + + "Rändluse ajal võite näha hoiatusi, mida nendes seadetes pole" "Operaator muutis seadeid" "Puudutage juhtmevabade hädaolukorra teatiste seadete nägemiseks" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 08216f842..c49a6f236 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -167,6 +167,8 @@ "Gehieneko itxarote-denbora:" "segundo" "Kopiatu da mezua" + + "Ibiltaritzan zaudenean, baliteke ezarpen hauetan zehaztutakoez gain beste alerta batzuk jasotzea" "Operadoreak ezarpenak aldatu ditu" "Saka ezazu hari gabeko larrialdi-alerten ezarpenak ikusteko" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 5602c119d..f4e5cf206 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -167,6 +167,8 @@ "حداکثر زمان انتظار:" "ثانیه" "پیام کپی شد" + + "وقتی درحال فراگردی هستید، ممکن است هشدارهایی دریافت کنید که در این تنظیمات لحاظ نشده‌اند" "شرکت مخابراتی تنظیمات را تغییر داده است" "برای دیدن تنظیمات هشدار اضطراری بی‌سیم، ضربه بزنید" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 2f4d9185c..51cdd86d2 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -167,6 +167,8 @@ "Odotuksen enimmäisaika:" "sekuntia" "Viesti kopioitu" + + "Kun olet roaming-tilassa, saatat saada ilmoituksia, jotka eivät sisälly näihin asetuksiin" "Operaattori muuttanut asetuksia" "Katso langattomien vaaratiedotteiden asetukset napauttamalla" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 620354598..3ff6c44be 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -167,6 +167,8 @@ "Durée d\'attente maximale :" "secondes" "Message copié" + + "Lorsque vous êtes en itinérance, vous pouvez recevoir des alertes qui ne sont pas comprises dans ces paramètres" "Les paramètres ont été modifiés par le fournisseur de services" "Touchez pour voir les paramètres des alertes d\'urgence sans fil" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 4edc5cce1..8e25502bb 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -167,6 +167,8 @@ "Temps d\'attente maximal :" "secondes" "Message copié" + + "Lorsque vous êtes en mode d\'itinérance, vous pouvez recevoir des alertes non incluses dans ces paramètres" "Paramètres modifiés par l\'opérateur" "Appuyez pour voir les paramètres des alertes d\'urgence sans fil" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index ed3427b34..771eaee32 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -167,6 +167,8 @@ "Tempo de espera máximo:" "segundos" "Copiouse a mensaxe" + + "Mentres estás en itinerancia, pode que recibas algunhas alertas que non están incluídas nesta configuración" "O operador cambiou a configuración" "Toca para ver a configuración das alertas de emerxencia sen fíos" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index cfc19d9d2..a064d2bbb 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -167,6 +167,8 @@ "પ્રતીક્ષાનો મહત્તમ સમયગાળો:" "સેકન્ડ" "સંદેશ કૉપિ કર્યો" + + "તમે રોમિંગમાં હો, ત્યારે તમને આ સેટિંગમાં સમાવેશ ન થતો હોય તેવા કેટલાક અલર્ટ મળે તેમ બની શકે છે" "મોબાઇલ ઑપરેટર દ્વારા સેટિંગ બદલવામાં આવ્યા છે" "વાયરલેસ ઇમર્જન્સી અલર્ટના સેટિંગ જોવા માટે ટૅપ કરો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index e8b6ec13f..9c0fef172 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -167,6 +167,8 @@ "ज़्यादा से ज़्यादा इतने समय बाद जगह की जानकारी देखी जाएगी:" "सेकंड" "मैसेज कॉपी किया गया" + + "रोमिंग में होने पर, आपको कुछ ऐसी सूचनाएं मिल सकती हैं जो इस सेटिंग में शामिल न हों" "यह सेटिंग, मोबाइल और इंटरनेट सेवा देने वाली कंपनी ने बदल दी है" "वायरलेस इमरजेंसी अलर्ट की सूचनाओं की सेटिंग देखने के लिए टैप करें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 4989a3e02..de65765f6 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -167,6 +167,8 @@ "Maksimalno vrijeme čekanja:" "s" "Poruka je kopirana" + + "Dok ste u roamingu, možda ćete dobiti neka upozorenja koja nisu uključena u ove postavke" "Mobilni operater promijenio je postavke" "Dodirnite da biste vidjeli postavke hitnih upozorenja putem bežične mreže" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index b7dbc6ef3..cadca85ac 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -167,6 +167,8 @@ "Maximális várakozási idő:" "másodperc" "Üzenet vágólapra másolva" + + "Roaming során megjelenhetnek olyan értesítések, amelyek nem találhatók meg ezeknél a beállításoknál" "A szolgáltató megváltoztatta a beállításokat" "Koppintson ide a vezeték nélküli vészjelzések beállításainak megtekintéséhez" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 4e9876e47..5b43317ac 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -167,6 +167,8 @@ "Սպասման առավելագույն ժամանակը՝" "վայրկյան" "Հաղորդագրությունը պատճենվեց" + + "Ռոումինգում գտնվելիս դուք կարող եք ստանալ որոշ ծանուցումներ, որոնք ներառված չեն այս կարգավորումներում։" "Կապի օպերատորը փոխել է կարգավորումները" "Հպեք՝ արտակարգ իրավիճակների անլար ծանուցումների կարգավորումները տեսնելու համար" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 8f4f08484..9e859b0f1 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -167,6 +167,8 @@ "Waktu tunggu maksimum:" "detik" "Pesan disalin" + + "Saat roaming, Anda mungkin mendapatkan beberapa notifikasi yang tidak disertakan di setelan ini" "Setelan diubah oleh operator" "Ketuk untuk melihat setelan peringatan darurat nirkabel" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 2dd56cb32..6b3830cec 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -167,6 +167,8 @@ "Hámarksbiðtími:" "sekúndur" "Skilaboð afrituð" + + "Þegar þú ert í reiki færðu hugsanlega viðvaranir sem eru ekki innifaldar í þessum stillingum" "Stillingum breytt af símafyrirtæki" "Ýttu til að sjá stillingar þráðlausra neyðarviðvarana" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index dcca76804..4d1523c0d 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -167,6 +167,8 @@ "Tempo massimo di attesa:" "secondi" "Messaggio copiato" + + "Quando sei in roaming, potresti ricevere alcuni avvisi non inclusi in queste impostazioni" "Impostazioni modificate dall\'operatore" "Tocca per visualizzare le impostazioni relative alle allerte di emergenza wireless" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 133f1dedb..22365a7cd 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -167,6 +167,8 @@ "זמן המתנה מרבי:" "שניות" "ההודעה הועתקה" + + "במהלך נדידה, עשויות להופיע התראות שלא נכללות בהגדרות האלה" "ההגדרות שונו על ידי הספק הסלולרי" "צריך להקיש כדי לראות את ההגדרות של ההתרעות האלחוטיות על מקרי חירום" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index bcd90dc65..f92685779 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -167,6 +167,8 @@ "最大待ち時間:" "秒" "メッセージをコピーしました" + + "ローミング中に、これらの設定に含まれない通知が届くことがあります" "携帯通信会社によって設定が変更されました" "タップすると、緊急速報メールの設定を確認できます" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 451d6d32b..45ab48d5c 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -167,6 +167,8 @@ "ლოდინის მაქსიმალური დრო:" "წამი" "შეტყობინება კოპირებულია" + + "როუმინგით სარგებლობისას თქვენ, შესაძლოა, მიიღოთ ისეთი გაფრთხილებები, რომლებიც ამ პარამეტრებში არ შედის" "პარამეტრები შეიცვალა ოპერატორის მიერ" "შეეხეთ უსადენო საგანგებო გაფრთხილებების პარამეტრების სანახავად" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 8f498af3e..9e971c156 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -167,6 +167,8 @@ "Максималды күту уақыты:" "секунд" "Хабар көшірілді" + + "Роумингіде болған кезде, параметрлерде қамтылмаған ескертулер алуыңыз мүмкін" "Параметрлерді оператор өзгерткен" "Төтенше жағдай туралы сымсыз хабарландыру параметрлерін көру үшін түртіңіз." diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 9942ac3ce..22be9d715 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -167,6 +167,8 @@ "រយៈពេលរង់ចាំ​អតិបរមា៖" "វិនាទី" "បាន​ចម្លង​សារ" + + "នៅពេល​ដែលអ្នក​កំពុងរ៉ូមីង អ្នកអាចទទួលបាន​ការជូនដំណឹង​មួយចំនួន ដែលមិនមាននៅក្នុង​ការកំណត់​ទាំងនេះ" "ការកំណត់​បានផ្លាស់ប្ដូរដោយ​ក្រុមហ៊ុនសេវាទូរសព្ទ" "ចុច ដើម្បីមើល​ការកំណត់​ការជូនដំណឹង​ពេលមានអាសន្ន​ដោយឥតប្រើខ្សែ" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 73e0ad5bf..53f658993 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -167,6 +167,8 @@ "ಗರಿಷ್ಠ ಕಾಯುವ ಸಮಯ:" "ಸೆಕೆಂಡುಗಳು" "ಸಂದೇಶವನ್ನು ನಕಲಿಸಲಾಗಿದೆ" + + "ನೀವು ರೋಮಿಂಗ್‌ನಲ್ಲಿರುವಾಗ ಈ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸೇರಿಸದ ಕೆಲವು ಎಚ್ಚರಿಕೆಗಳನ್ನು ನೀವು ಪಡೆಯಬಹುದು" "ವಾಹಕದಿಂದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ" "ವೈರ್‌ಲೆಸ್ ತುರ್ತು ಎಚ್ಚರಿಕೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index f84967659..73a99dd7e 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -167,6 +167,8 @@ "최대 대기 시간:" "초" "메시지 복사됨" + + "로밍 중 설정에 포함되지 않은 일부 알림이 수신될 수 있습니다." "이동통신사에서 설정을 변경함" "무선 긴급 경보 설정을 보려면 탭하세요." diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index c531c5856..ffa64983f 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -99,7 +99,7 @@ "Эскертүү ар дайым катуу ойнотулсун" "\"Тынчымды алба\" жана үн көлөмүнүн башка жөндөөлөрүн этибарга албоо" "Аймакты жаңыртуу боюнча таркатмалар" - "SIM-картанын абалы тууралуу жаңыртылган маалымат көрүнсүн" + "SIM-картанын абалы тууралуу жаңырган маалымат көрүнсүн" "Шашылыш билдирүүнүн категориясы:" "Геофизакалык" "Метеорологиялык" @@ -167,6 +167,8 @@ "Эң көп күтүү убакыты:" "секунд" "Билдирүү көчүрүлдү" + + "Роуминг учурунда бул жөндөөлөрдө камтылбаган эскертүүлөрдү алышыңыз мүмкүн" "Жөндөөлөр байланыш оператору тарабынан өзгөртүлдү" "Зымсыз шашылыш билдирүү жөндөөлөрүн көрүү үчүн басыңыз" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 3ab7b4879..3c05f3e00 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -167,6 +167,8 @@ "ເວລາລໍຖ້າສູງສຸງ:" "ວິນາທີ" "ສຳເນົາຂໍ້ຄວາມແລ້ວ" + + "ໃນຂະນະທີ່ທ່ານໂຣມມິງ, ທ່ານອາດໄດ້ຮັບການແຈ້ງເຕືອນບາງຢ່າງທີ່ບໍ່ຮວມຢູ່ໃນການຕັ້ງຄ່າເຫຼົ່ານີ້" "ຜູ້ໃຫ້ບໍລິການໄດ້ປ່ຽນການຕັ້ງຄ່າແລ້ວ" "ແຕະເພື່ອເບິ່ງການຕັ້ງຄ່າການແຈ້ງເຕືອນສຸກເສີນໄຮ້ສາຍ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index a94ecca36..28799e7d8 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -167,6 +167,8 @@ "Maksimalus laukimo laikas:" "sekundės" "Pranešimas nukopijuotas" + + "Kai naudojate tarptinklinį ryšį, galite gauti įspėjimų, kurie neįtraukti į šiuos nustatymus" "Operatoriaus pakeisti nustatymai" "Palieskite, kad peržiūrėtumėte belaidžiu ryšiu siunčiamų kritinės padėties įspėjimų nustatymus" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 61819cf8d..09d113600 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -167,6 +167,8 @@ "Maksimālais gaidīšanas laiks:" "sekundes" "Ziņojums nokopēts" + + "Viesabonēšanas laikā varbūt saņemsiet brīdinājumus, kas nav iekļauti šajos iestatījumos" "Iestatījumi, ko mainījis mobilo sakaru operators" "Pieskarieties, lai skatītu bezvadu ārkārtas brīdinājumu iestatījumus." diff --git a/res/values-mcc427-af/strings.xml b/res/values-mcc427-af/strings.xml new file mode 100644 index 000000000..f5b85f728 --- /dev/null +++ b/res/values-mcc427-af/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nasionale noodberig" + "Wys onttrekkingdialoog nadat eerste waarskuwing gewys is (behalwe presidensiële waarskuwing)." + "Nasionale noodberigte" + "Noodberig" + "Noodberig" + "Noodberig" + "Noodberig" + "Waarskuwingberig" + "Toetswaarskuwing" + "Oefening" + "Publiekeveiligheidwaarskuwing" + "Toetswaarskuwing" + "Waarskuwingberigte" + "Publiekeveiligheidwaarskuwings" + "Toetswaarskuwings" + diff --git a/res/values-mcc427-am/strings.xml b/res/values-mcc427-am/strings.xml new file mode 100644 index 000000000..86704b169 --- /dev/null +++ b/res/values-mcc427-am/strings.xml @@ -0,0 +1,34 @@ + + + + + "ብሔራዊ የድንገተኛ አደጋ ማንቂያ" + "የመጀመሪያው ማንቂያ (ከብሔራዊ ማንቂያ ሌላ) ከታየ በኋላ የመርጦ መውጫ መገናኛን አሳይ።" + "ብሔራዊ የድንገተኛ አደጋ ማንቂያዎች" + "የድንገተኛ አደጋ ማንቂያ" + "የድንገተኛ አደጋ ማንቂያ" + "የድንገተኛ አደጋ ማንቂያ" + "የድንገተኛ አደጋ ማንቂያ" + "የማስጠንቀቂያ ማንቂያ" + "ማንቂያን ሞክር" + "ልምምድ" + "የሕዝባዊ ደህንነት ማንቂያ" + "የሙከራ ማንቂያ" + "ማስጠንቀቂያ ማንቂያዎች" + "የሕዝባዊ ደህንነት ማንቂያዎች" + "የሙከራ ማንቂያዎች" + diff --git a/res/values-mcc427-ar/strings.xml b/res/values-mcc427-ar/strings.xml new file mode 100644 index 000000000..c4030da51 --- /dev/null +++ b/res/values-mcc427-ar/strings.xml @@ -0,0 +1,34 @@ + + + + + "تحذير وطني طارئ" + "عرض خيار الإيقاف بعد عرض أوّل تنبيه (غير التنبيه الوطني)" + "تحذيرات وطنية طارئة" + "تنبيه طوارئ" + "تنبيه طوارئ" + "تنبيه طوارئ" + "تنبيه طوارئ" + "تنبيه تحذيري" + "تنبيه تجريبي" + "تمرين" + "تنبيه بشأن السلامة العامة" + "تنبيه تجريبي" + "تنبيهات تحذيرية" + "تنبيهات بشأن السلامة العامة" + "تنبيهات تجريبية" + diff --git a/res/values-mcc427-as/strings.xml b/res/values-mcc427-as/strings.xml new file mode 100644 index 000000000..b309973ae --- /dev/null +++ b/res/values-mcc427-as/strings.xml @@ -0,0 +1,34 @@ + + + + + "ৰাষ্ট্ৰীয় জৰুৰীকালীন সতৰ্কবাৰ্তা" + "প্ৰথমটো সতৰ্কবাৰ্তা দেখুওৱাৰ পাছত এটা পৰিহাৰ কৰাৰ ডায়লগ দেখুৱাওক (ৰাষ্ট্ৰীয় স্তৰৰ সতৰ্কবাৰ্তাৰ বাহিৰে)।" + "ৰাষ্ট্ৰীয় জৰুৰীকালীন সতৰ্কবাৰ্তা" + "জৰুৰীকালীন সতৰ্কবাৰ্তা" + "জৰুৰীকালীন সতৰ্কবাৰ্তা" + "জৰুৰীকালীন সতৰ্কবাৰ্তা" + "জৰুৰীকালীন সতৰ্কবাৰ্তা" + "সকীয়নিমূলক সতৰ্কবাৰ্তা" + "পৰীক্ষামূলক সতৰ্কবাৰ্তা" + "ব্যায়াম" + "ৰাজহুৱা সুৰক্ষা বিষয়ক সতৰ্কবাৰ্তা" + "পৰীক্ষামূলক সতৰ্কবাৰ্তা" + "সকীয়নিমূলক সতৰ্কবাৰ্তা" + "ৰাজহুৱা সুৰক্ষা বিষয়ক সতৰ্কবাৰ্তাসমূহ" + "পৰীক্ষামূলক সতৰ্কবাৰ্তা" + diff --git a/res/values-mcc427-az/strings.xml b/res/values-mcc427-az/strings.xml new file mode 100644 index 000000000..5517428af --- /dev/null +++ b/res/values-mcc427-az/strings.xml @@ -0,0 +1,34 @@ + + + + + "Milli Həyəcan Siqnalı" + "İlk siqnaldan (Dövlət siqnalından başqa) sonra imtina dialoqunu göstərin." + "Millu fövqəladə hal siqnalları" + "Həyəcan Siqnalı" + "Həyəcan Siqnalı" + "Həyəcan Siqnalı" + "Həyəcan Siqnalı" + "Xəbərdarlıq Siqnalı" + "Test Siqnalı" + "Məşq" + "İctimai Təhlükəsizlik Siqnalı" + "Test Siqnalı" + "Xəbərdarlıq siqnalları" + "İctimai təhlükəsizlik siqnalları" + "Test siqnalları" + diff --git a/res/values-mcc427-b+sr+Latn/strings.xml b/res/values-mcc427-b+sr+Latn/strings.xml new file mode 100644 index 000000000..c77ceaf94 --- /dev/null +++ b/res/values-mcc427-b+sr+Latn/strings.xml @@ -0,0 +1,34 @@ + + + + + "Obaveštenje o hitnom slučaju na nivou zemlje" + "Prikaži dijalog za onemogućavanje posle prikaza prvog upozorenja (osim upozorenja na nivou zemlje)." + "Obaveštenja – hitan slučaj na nivou zemlje" + "Obaveštenje o hitnom slučaju" + "Obaveštenje o hitnom slučaju" + "Obaveštenje o hitnom slučaju" + "Obaveštenje o hitnom slučaju" + "Obaveštenje o upozorenju" + "Probno obaveštenje" + "Vežbanje" + "Obaveštenje o javnoj bezbednosti" + "Probno obaveštenje" + "Obaveštenja o upozorenjima" + "Obaveštenja o javnoj bezbednosti" + "Probna obaveštenja" + diff --git a/res/values-mcc427-be/strings.xml b/res/values-mcc427-be/strings.xml new file mode 100644 index 000000000..0e6c1b91a --- /dev/null +++ b/res/values-mcc427-be/strings.xml @@ -0,0 +1,34 @@ + + + + + "Дзяржаўная абвестка пра надзвычайную сітуацыю" + "Прапаноўваць выключыць абвесткі (акрамя дзяржаўных) пасля першага паказу." + "Абвесткі пра надзвычайныя сітуацыі" + "Аварыйная абвестка" + "Аварыйная абвестка" + "Аварыйная абвестка" + "Аварыйная абвестка" + "Папераджальная абвестка" + "Тэставая абвестка" + "Вучэнні" + "Абвестка пра пагрозу грамадскай бяспецы" + "Тэставая абвестка" + "Папераджальныя абвесткі" + "Абвесткі пра пагрозу грамадскай бяспецы" + "Тэставыя абвесткі" + diff --git a/res/values-mcc427-bg/strings.xml b/res/values-mcc427-bg/strings.xml new file mode 100644 index 000000000..260aa5bc7 --- /dev/null +++ b/res/values-mcc427-bg/strings.xml @@ -0,0 +1,34 @@ + + + + + "Сигнал при спешни случаи на национално ниво" + "Извеждане на диал. прозорец за отказ след показване на първия сигнал (разл. от националния сигнал)." + "Сигнали при спешни случаи на нац. ниво" + "Сигнал при спешен случай" + "Сигнал при спешен случай" + "Сигнал при спешен случай" + "Сигнал при спешен случай" + "Сигнал за предупреждение" + "Тестови сигнал" + "Тренировка" + "Сигнал за обществена безопасност" + "Тестови сигнал" + "Сигнали за предупреждение" + "Сигнали за обществена безопасност" + "Тестови сигнали" + diff --git a/res/values-mcc427-bn/strings.xml b/res/values-mcc427-bn/strings.xml new file mode 100644 index 000000000..bbb677966 --- /dev/null +++ b/res/values-mcc427-bn/strings.xml @@ -0,0 +1,34 @@ + + + + + "জাতীয় স্তরে জরুরি সতর্কতা" + "প্রথম সতর্কতার পরে একটি অপ্ট-আউট ডায়ালগ দেখুন (জাতীয় স্তরে সতর্কতা ছাড়া)।" + "জাতীয় স্তরে জরুরি সতর্কতা" + "জরুরি সতর্কতা" + "জরুরি সতর্কতা" + "জরুরি সতর্কতা" + "জরুরি সতর্কতা" + "সতর্কতা সংক্রান্ত বিজ্ঞপ্তি" + "পরীক্ষামূলক সতর্কতা" + "ব্যায়াম" + "সর্বজনীন নিরাপত্তা সম্পর্কিত বিজ্ঞপ্তি" + "পরীক্ষামূলকভাবে জারি সতর্কতা" + "সতর্কতা সংক্রান্ত বিজ্ঞপ্তি" + "সর্বজনীন নিরাপত্তা সম্পর্কিত বিজ্ঞপ্তি" + "পরীক্ষামূলকভাবে জারি সতর্কতা" + diff --git a/res/values-mcc427-bs/strings.xml b/res/values-mcc427-bs/strings.xml new file mode 100644 index 000000000..b16e5c9c5 --- /dev/null +++ b/res/values-mcc427-bs/strings.xml @@ -0,0 +1,34 @@ + + + + + "Državno upozorenje za hitan slučaj" + "Prikaz dijaloškog okvira za isključivanje nakon primanja prvog upozorenja (osim nacionalnog)." + "Državna upozorenja za hitan slučaj" + "Upozorenje za hitan slučaj" + "Upozorenje za hitan slučaj" + "Upozorenje za hitan slučaj" + "Upozorenje za hitan slučaj" + "Upozorenje" + "Probno upozorenje" + "Vježba" + "Upozorenje o javnoj sigurnosti" + "Testno upozorenje" + "Upozorenja" + "Upozorenja o javnoj sigurnosti" + "Testna upozorenja" + diff --git a/res/values-mcc427-ca/strings.xml b/res/values-mcc427-ca/strings.xml new file mode 100644 index 000000000..aa4c03d66 --- /dev/null +++ b/res/values-mcc427-ca/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta d\'emergències nacional" + "Mostra un quadre de diàleg de desactivació després de la primera alerta (tret d\'alerta nacional)." + "Alertes d\'emergència nacionals" + "Alerta d\'emergències" + "Alerta d\'emergències" + "Alerta d\'emergències" + "Alerta d\'emergències" + "Alerta" + "Alerta de prova" + "Simulacre" + "Alerta de seguretat pública" + "Alerta de prova" + "Alertes" + "Alertes de seguretat públiques" + "Alertes de prova" + diff --git a/res/values-mcc427-cs/strings.xml b/res/values-mcc427-cs/strings.xml new file mode 100644 index 000000000..c7f5af1da --- /dev/null +++ b/res/values-mcc427-cs/strings.xml @@ -0,0 +1,34 @@ + + + + + "Celostátní výstražná zpráva" + "Po zobrazení první výstrahy (jiné než celostátní výstrahy) zobrazit dialog k odhlášení." + "Celostátní výstražné zprávy" + "Výstražná zpráva" + "Výstražná zpráva" + "Výstražná zpráva" + "Výstražná zpráva" + "Upozornění" + "Testovací výstraha" + "Cvičení" + "Upozornění ohledně veřejné bezpečnosti" + "Testovací výstraha" + "Varování" + "Upozornění ohledně veřejné bezpečnosti" + "Testovací výstrahy" + diff --git a/res/values-mcc427-da/strings.xml b/res/values-mcc427-da/strings.xml new file mode 100644 index 000000000..30695455f --- /dev/null +++ b/res/values-mcc427-da/strings.xml @@ -0,0 +1,34 @@ + + + + + "National nødalarm" + "Vis en dialogboks om fravalg efter visningen af den første advarsel (nationalt varsel er undtaget)." + "Nationale nødalarmer" + "Nødalarm" + "Nødalarm" + "Nødalarm" + "Nødalarm" + "Advarselsalarm" + "Testalarm" + "Øvelse" + "Offentlig sikkerhedsadvarsel" + "Testalarm" + "Advarselsalarmer" + "Offentlige sikkerhedsadvarsler" + "Testalarmer" + diff --git a/res/values-mcc427-de/strings.xml b/res/values-mcc427-de/strings.xml new file mode 100644 index 000000000..6bb9a0c62 --- /dev/null +++ b/res/values-mcc427-de/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nationale Notfallwarnung" + "Nach erster Warnung Deaktivierungsoption anzeigen (außer bei nationalen Warnungen)." + "Nationale Notfallwarnungen" + "Notfallwarnung" + "Notfallwarnung" + "Notfallwarnung" + "Notfallwarnung" + "Warnung" + "Warnung der Kategorie „Test“" + "Übung" + "Warnung zur öffentlichen Sicherheit" + "Testwarnung" + "Warnungen" + "Warnungen zur öffentlichen Sicherheit" + "Testwarnungen" + diff --git a/res/values-mcc427-el/strings.xml b/res/values-mcc427-el/strings.xml new file mode 100644 index 000000000..ecdc57827 --- /dev/null +++ b/res/values-mcc427-el/strings.xml @@ -0,0 +1,34 @@ + + + + + "Ειδοποίηση εθνικής έκτακτης ανάγκης" + "Εμφάνιση παραθύρου εξαίρεσης μετά την πρώτη ειδοποίηση (εκτός από Ειδοποίηση σε εθνικό επίπεδο)." + "Ειδοποιήσεις εθνικών έκτακτων αναγκών" + "Ειδοποίηση έκτακτης ανάγκης" + "Ειδοποίηση έκτακτης ανάγκης" + "Ειδοποίηση έκτακτης ανάγκης" + "Ειδοποίηση έκτακτης ανάγκης" + "Ειδοποίηση προειδοποίησης" + "Δοκιμαστική ειδοποίηση" + "Άσκηση" + "Ειδοποίηση δημόσιας ασφάλειας" + "Δοκιμαστική ειδοποίηση" + "Ειδοποιήσεις προειδοποίησης" + "Ειδοποιήσεις δημόσιας ασφάλειας" + "Δοκιμαστικές ειδοποιήσεις" + diff --git a/res/values-mcc427-en-rAU/strings.xml b/res/values-mcc427-en-rAU/strings.xml new file mode 100644 index 000000000..ca76c7b57 --- /dev/null +++ b/res/values-mcc427-en-rAU/strings.xml @@ -0,0 +1,34 @@ + + + + + "National emergency alert" + "Show an opt-out dialogue after displaying the first alert (other than national alert)." + "National emergency alerts" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Warning alert" + "Test alert" + "Exercise" + "Public safety alert" + "Test alert" + "Warning alerts" + "Public safety alerts" + "Test alerts" + diff --git a/res/values-mcc427-en-rCA/strings.xml b/res/values-mcc427-en-rCA/strings.xml new file mode 100644 index 000000000..ca76c7b57 --- /dev/null +++ b/res/values-mcc427-en-rCA/strings.xml @@ -0,0 +1,34 @@ + + + + + "National emergency alert" + "Show an opt-out dialogue after displaying the first alert (other than national alert)." + "National emergency alerts" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Warning alert" + "Test alert" + "Exercise" + "Public safety alert" + "Test alert" + "Warning alerts" + "Public safety alerts" + "Test alerts" + diff --git a/res/values-mcc427-en-rGB/strings.xml b/res/values-mcc427-en-rGB/strings.xml new file mode 100644 index 000000000..ca76c7b57 --- /dev/null +++ b/res/values-mcc427-en-rGB/strings.xml @@ -0,0 +1,34 @@ + + + + + "National emergency alert" + "Show an opt-out dialogue after displaying the first alert (other than national alert)." + "National emergency alerts" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Warning alert" + "Test alert" + "Exercise" + "Public safety alert" + "Test alert" + "Warning alerts" + "Public safety alerts" + "Test alerts" + diff --git a/res/values-mcc427-en-rIN/strings.xml b/res/values-mcc427-en-rIN/strings.xml new file mode 100644 index 000000000..ca76c7b57 --- /dev/null +++ b/res/values-mcc427-en-rIN/strings.xml @@ -0,0 +1,34 @@ + + + + + "National emergency alert" + "Show an opt-out dialogue after displaying the first alert (other than national alert)." + "National emergency alerts" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Emergency alert" + "Warning alert" + "Test alert" + "Exercise" + "Public safety alert" + "Test alert" + "Warning alerts" + "Public safety alerts" + "Test alerts" + diff --git a/res/values-mcc427-en-rXC/strings.xml b/res/values-mcc427-en-rXC/strings.xml new file mode 100644 index 000000000..24384b47c --- /dev/null +++ b/res/values-mcc427-en-rXC/strings.xml @@ -0,0 +1,34 @@ + + + + + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‎‎National Emergency Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎Show an opt-out dialog after displaying the first alert (other than National alert).‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎National Emergency Alerts‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‎‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‎‏‎‎Emergency Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‎Emergency Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‎Emergency Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‎‏‎Emergency Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎Warning Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‏‎Test Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎Exercise‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‎Public Safety Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎Test Alert‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎Warning alerts‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎Public safety alerts‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎Test alerts‎‏‎‎‏‎" + diff --git a/res/values-mcc427-es-rUS/strings.xml b/res/values-mcc427-es-rUS/strings.xml new file mode 100644 index 000000000..59c080652 --- /dev/null +++ b/res/values-mcc427-es-rUS/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta de emergencia nacional" + "Mostrar diálogo para inhabilitar después de la primera alerta (alertas que no sean nacionales)" + "Alertas de emergencia nacional" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de advertencia" + "Alerta de prueba" + "Ejercicio" + "Alerta de seguridad pública" + "Alerta de prueba" + "Alertas de advertencia" + "Alertas de seguridad pública" + "Alertas de prueba" + diff --git a/res/values-mcc427-es/strings.xml b/res/values-mcc427-es/strings.xml new file mode 100644 index 000000000..5a7b0c69c --- /dev/null +++ b/res/values-mcc427-es/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta de emergencia nacional" + "Muestra un cuadro para darse de baja tras la primera alerta (excepto si es una alerta nacional)." + "Alertas de emergencia nacional" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de emergencia" + "Alerta de advertencia" + "Alerta de prueba" + "Simulacro" + "Alerta de seguridad pública" + "Alerta de prueba" + "Alertas de advertencia" + "Alertas de seguridad pública" + "Alertas de prueba" + diff --git a/res/values-mcc427-et/strings.xml b/res/values-mcc427-et/strings.xml new file mode 100644 index 000000000..fdb54fcc2 --- /dev/null +++ b/res/values-mcc427-et/strings.xml @@ -0,0 +1,34 @@ + + + + + "Riiklik hädaolukorra hoiatus" + "Loobumise dialoogi näitamine pärast esimese hoiatuse kuvamist (v.a riiklik hoiatus)." + "Riiklikud hädaolukorra hoiatused" + "Hädaolukorra hoiatus" + "Hädaolukorra hoiatus" + "Hädaolukorra hoiatus" + "Hädaolukorra hoiatus" + "Hoiatusmärguanne" + "Testhoiatus" + "Treening" + "Avalik ohutusmärguanne" + "Testhoiatus" + "Hoiatusmärguanded" + "Avalikud ohutusmärguanded" + "Testhoiatused" + diff --git a/res/values-mcc427-eu/strings.xml b/res/values-mcc427-eu/strings.xml new file mode 100644 index 000000000..8221c7452 --- /dev/null +++ b/res/values-mcc427-eu/strings.xml @@ -0,0 +1,34 @@ + + + + + "Larrialdi-alerta nazionala" + "Erakutsi alertak ez jasotzea aukeratzeko leihoa lehena jaso ondoren (alerta nazionaletan izan ezik)" + "Larrialdi-alerta nazionalak" + "Larrialdi-alerta" + "Larrialdi-alerta" + "Larrialdi-alerta" + "Larrialdi-alerta" + "Abisuen alerta" + "Probako alerta" + "Jarduera fisikoa" + "Segurtasun publikoari buruzko alerta" + "Probako alerta" + "Abisuen alertak" + "Segurtasun publikoari buruzko alertak" + "Probako alertak" + diff --git a/res/values-mcc427-fa/strings.xml b/res/values-mcc427-fa/strings.xml new file mode 100644 index 000000000..c26f157f9 --- /dev/null +++ b/res/values-mcc427-fa/strings.xml @@ -0,0 +1,34 @@ + + + + + "هشدار وضعیت اضطراری ملی" + "نمایش کادر گفتگوی امکان انصراف پس‌از نمایش اولین هشدار (غیر از «هشدار ملی»)." + "هشدارهای وضعیت اضطراری ملی" + "هشدار وضعیت اضطراری" + "هشدار وضعیت اضطراری" + "هشدار وضعیت اضطراری" + "هشدار وضعیت اضطراری" + "هشدار خطر" + "هشدار آزمایشی" + "تمرین" + "هشدار ایمنی عمومی" + "هشدار آزمایشی" + "هشدارهای خطر" + "هشدارهای ایمنی عمومی" + "هشدارهای آزمایشی" + diff --git a/res/values-mcc427-fi/strings.xml b/res/values-mcc427-fi/strings.xml new file mode 100644 index 000000000..e6942b88b --- /dev/null +++ b/res/values-mcc427-fi/strings.xml @@ -0,0 +1,34 @@ + + + + + "Kansallinen vaaratiedote" + "Näytä kieltäytymisikkuna ensimmäisen hälytyksen (muun kuin kansallisen hälytyksen) jälkeen." + "Kansalliset vaaratiedotteet" + "Vaaratiedote" + "Vaaratiedote" + "Vaaratiedote" + "Vaaratiedote" + "Varoitus" + "Testihälytys" + "Harjoitus" + "Yleistä turvallisuutta koskeva varoitus" + "Testivaroitus" + "Varoitukset" + "Yleistä turvallisuutta koskevat varoitukset" + "Testivaroitukset" + diff --git a/res/values-mcc427-fr-rCA/strings.xml b/res/values-mcc427-fr-rCA/strings.xml new file mode 100644 index 000000000..63d299f53 --- /dev/null +++ b/res/values-mcc427-fr-rCA/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerte d\'urgence nationale" + "Afficher la boîte de dialogue de désactivation après la première alerte (sauf alerte nationale)." + "Alertes d\'urgence nationales" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'avertissement" + "Alerte test" + "Faire de l\'exercice" + "Alerte relative à la sécurité publique" + "Alerte test" + "Alertes d\'avertissement" + "Alertes relatives à la sécurité publique" + "Alertes tests" + diff --git a/res/values-mcc427-fr/strings.xml b/res/values-mcc427-fr/strings.xml new file mode 100644 index 000000000..9d52d37ec --- /dev/null +++ b/res/values-mcc427-fr/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerte d\'urgence nationale" + "Afficher une boîte de dialogue de désactivation après la première alerte (sauf alerte nationale)." + "Alertes d\'urgence nationales" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'urgence" + "Alerte d\'avertissement" + "Alerte de test" + "Exercice" + "Alerte de sécurité publique" + "Alerte de test" + "Alertes d\'avertissement" + "Alertes de sécurité publique" + "Alertes de test" + diff --git a/res/values-mcc427-gl/strings.xml b/res/values-mcc427-gl/strings.xml new file mode 100644 index 000000000..65bc89260 --- /dev/null +++ b/res/values-mcc427-gl/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta nacional de emerxencia" + "Mostra un cadro de diálogo de desactivación despois da primeira alerta (agás alerta nacional)." + "Alertas nacionais de emerxencia" + "Alerta de emerxencia" + "Alerta de emerxencia" + "Alerta de emerxencia" + "Alerta de emerxencia" + "Alerta de advertencia" + "Alerta de proba" + "Exercicio" + "Alerta de seguranza pública" + "Alerta de proba" + "Alertas de advertencia" + "Alertas de seguranza pública" + "Alertas de proba" + diff --git a/res/values-mcc427-gu/strings.xml b/res/values-mcc427-gu/strings.xml new file mode 100644 index 000000000..407e8e754 --- /dev/null +++ b/res/values-mcc427-gu/strings.xml @@ -0,0 +1,34 @@ + + + + + "રાષ્ટ્રીય ઇમર્જન્સી માટે અલર્ટ" + "પ્રથમ અલર્ટ બતાવ્યા પછી નાપસંદ કરવા માટેનો સંવાદ બતાવો (રાષ્ટ્રીય અલર્ટ સિવાય અન્ય)." + "રાષ્ટ્રીય ઇમર્જન્સી માટે અલર્ટ" + "ઇમર્જન્સી અલર્ટ" + "ઇમર્જન્સી અલર્ટ" + "ઇમર્જન્સી અલર્ટ" + "ઇમર્જન્સી અલર્ટ" + "ચેતવણી માટે અલર્ટ" + "પરીક્ષણ માટેનું અલર્ટ" + "વ્યાયામ" + "સાર્વજનિક સલામતી માટે અલર્ટ" + "પરીક્ષણ માટે અલર્ટ" + "ચેતવણી માટે અલર્ટ" + "સાર્વજનિક સલામતી માટે અલર્ટ" + "પરીક્ષણ માટે અલર્ટ" + diff --git a/res/values-mcc427-hi/strings.xml b/res/values-mcc427-hi/strings.xml new file mode 100644 index 000000000..96ea080ac --- /dev/null +++ b/res/values-mcc427-hi/strings.xml @@ -0,0 +1,34 @@ + + + + + "राष्ट्रीय आपातकाल की चेतावनी" + "पहली चेतावनी (राष्ट्रीय स्तर पर चेतावनी के अलावा) दिखाने के बाद, ऑप्ट-आउट डायलॉग दिखाएं." + "राष्ट्रीय आपातकाल की चेतावनियां" + "आपातकालीन स्थिति की चेतावनी" + "आपातकालीन स्थिति की चेतावनी" + "आपातकालीन स्थिति की चेतावनी" + "आपातकालीन स्थिति की चेतावनी" + "बच्चों के अपहरण से जुड़ी चेतावनी" + "हर महीने होने वाली जांच की चेतावनी" + "अभ्यास" + "लोगों की सुरक्षा से जुड़ी चेतावनी" + "स्थानीय सरकारी विभाग का टेस्ट अलर्ट" + "बच्चों के अपहरण से जुड़ी चेतावनियां" + "लोगों की सुरक्षा से जुड़ी चेतावनियां" + "टेस्ट अलर्ट" + diff --git a/res/values-mcc427-hr/strings.xml b/res/values-mcc427-hr/strings.xml new file mode 100644 index 000000000..7bd8f35bd --- /dev/null +++ b/res/values-mcc427-hr/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nacionalno hitno upozorenje" + "Prikaži dijaloški okvir za isključivanje nakon prikazivanja prvog upozorenja (osim nacionalnog)." + "Nacionalna hitna upozorenja" + "Hitno upozorenje" + "Hitno upozorenje" + "Hitno upozorenje" + "Hitno upozorenje" + "Upozorenje o opasnosti" + "Testno upozorenje" + "Vježba" + "Upozorenje o javnoj sigurnosti" + "Testno upozorenje" + "Upozorenja o opasnosti" + "Upozorenja o javnoj sigurnosti" + "Testna upozorenja" + diff --git a/res/values-mcc427-hu/strings.xml b/res/values-mcc427-hu/strings.xml new file mode 100644 index 000000000..234798b63 --- /dev/null +++ b/res/values-mcc427-hu/strings.xml @@ -0,0 +1,34 @@ + + + + + "Országos szükségállapotról szóló riasztás" + "Leiratkozási párbeszédpanel megjelenítése az első értesítés után (kivéve országos riasztás esetén)." + "Országos szükségállapot-jelző riasztások" + "Vészjelzés" + "Vészjelzés" + "Vészjelzés" + "Vészjelzés" + "Figyelmeztető riasztás" + "Próbariasztás" + "Testmozgás" + "Közbiztonsággal kapcsolatos riasztás" + "Próbariasztás" + "Figyelmeztető riasztások" + "Közbiztonsággal kapcsolatos riasztások" + "Próbariasztások" + diff --git a/res/values-mcc427-hy/strings.xml b/res/values-mcc427-hy/strings.xml new file mode 100644 index 000000000..4a7a7ef78 --- /dev/null +++ b/res/values-mcc427-hy/strings.xml @@ -0,0 +1,34 @@ + + + + + "Արտակարգ իրավիճակի մասին համապետական զգուշացում" + "Ցուցադրել ազդարարումն անջատելու պատուհան առաջին ազդարարումից հետո (եթե այն համապետական չէ)" + "Արտակարգ իրավիճակի համապետական զգուշացում" + "Արտակարգ իրավիճակի մասին զգուշացում" + "Արտակարգ իրավիճակի մասին զգուշացում" + "Արտակարգ իրավիճակի մասին զգուշացում" + "Արտակարգ իրավիճակի մասին զգուշացում" + "Նախազգուշացում" + "Փորձնական ծանուցում" + "Ուսումնական" + "Հանրային անվտանգության սպառնալիքի մասին զգուշացում" + "Փորձնական զգուշացում" + "Նախազգուշացումներ" + "Հանրային անվտանգության սպառնալիքի մասին զգուշացումներ" + "Փորձնական զգուշացումներ" + diff --git a/res/values-mcc427-in/strings.xml b/res/values-mcc427-in/strings.xml new file mode 100644 index 000000000..c15f0811f --- /dev/null +++ b/res/values-mcc427-in/strings.xml @@ -0,0 +1,34 @@ + + + + + "Peringatan Darurat Nasional" + "Tampilkan dialog pilihan tidak ikut setelah peringatan pertama (selain Peringatan nasional)." + "Peringatan Darurat Nasional" + "Peringatan Darurat" + "Peringatan Darurat" + "Peringatan Darurat" + "Peringatan Darurat" + "Peringatan" + "Peringatan Pengujian" + "Latihan" + "Peringatan Keamanan Publik" + "Peringatan Pengujian" + "Peringatan" + "Peringatan keamanan publik" + "Peringatan pengujian" + diff --git a/res/values-mcc427-is/strings.xml b/res/values-mcc427-is/strings.xml new file mode 100644 index 000000000..e09d9320c --- /dev/null +++ b/res/values-mcc427-is/strings.xml @@ -0,0 +1,34 @@ + + + + + "Innlend neyðarviðvörun" + "Sýna glugga til að afþakka viðvaranir eftir að sú fyrsta birtist (nema neyðarviðvaranir)." + "Innlendar neyðarviðvaranir" + "Neyðarviðvörun" + "Neyðarviðvörun" + "Neyðarviðvörun" + "Neyðarviðvörun" + "Viðvörun" + "Prufuviðvörun" + "Æfing" + "Almannavarnatilkynning" + "Prufuviðvörun" + "Viðvaranir" + "Almannavarnatilkynningar" + "Prufuviðvaranir" + diff --git a/res/values-mcc427-it/strings.xml b/res/values-mcc427-it/strings.xml new file mode 100644 index 000000000..b05fc6314 --- /dev/null +++ b/res/values-mcc427-it/strings.xml @@ -0,0 +1,34 @@ + + + + + "Allerta di emergenza nazionale" + "Mostra finestra di disattivazione dopo la prima allerta (diversa da un\'allerta nazionale)." + "Allerte di emergenza nazionale" + "Allerta di emergenza" + "Allerta di emergenza" + "Allerta di emergenza" + "Allerta di emergenza" + "Allerta" + "Allerta di prova" + "Esercitazione" + "Allerta sicurezza pubblica" + "Allerta di prova" + "Avvisi" + "Allerte sicurezza pubblica" + "Allerte di prova" + diff --git a/res/values-mcc427-iw/strings.xml b/res/values-mcc427-iw/strings.xml new file mode 100644 index 000000000..29412f515 --- /dev/null +++ b/res/values-mcc427-iw/strings.xml @@ -0,0 +1,34 @@ + + + + + "התרעה על מקרה חירום לאומי" + "הצגת תיבת דו-שיח לביטול ההסכמה לאחר הצגת ההתרעה הראשונה (מלבד התרעה ברמה הלאומית)." + "התרעות על מקרה חירום לאומי" + "התרעת חירום" + "התרעת חירום" + "התרעת חירום" + "התרעת חירום" + "התרעת אזהרה" + "התרעת בדיקה" + "פעילות גופנית" + "התרעה בנוגע לביטחון הציבור" + "התרעת בדיקה" + "התראות אזהרה" + "התרעות בנוגע לביטחון הציבור" + "התרעות בדיקה" + diff --git a/res/values-mcc427-ja/strings.xml b/res/values-mcc427-ja/strings.xml new file mode 100644 index 000000000..6b4899643 --- /dev/null +++ b/res/values-mcc427-ja/strings.xml @@ -0,0 +1,34 @@ + + + + + "緊急速報メール(国内)" + "警報(全国的な警報以外)を初めて表示した後に、受信停止選択ダイアログを表示します。" + "緊急速報メール(国内)" + "緊急速報メール" + "緊急速報メール" + "緊急速報メール" + "緊急速報メール" + "警告アラート" + "テスト速報メール" + "訓練" + "災害情報アラート" + "テストアラート" + "警告アラート" + "災害情報アラート" + "テストアラート" + diff --git a/res/values-mcc427-ka/strings.xml b/res/values-mcc427-ka/strings.xml new file mode 100644 index 000000000..db4fd53cb --- /dev/null +++ b/res/values-mcc427-ka/strings.xml @@ -0,0 +1,34 @@ + + + + + "ეროვნული დონის საგანგებო გაფრთხილება" + "პირველი გაფრთხილების შემდეგ უარის თქმის დიალოგის ჩვენება (ეროვნული დონის გაფრთხილებათა გარდა)." + "ეროვნული დონის საგანგებო გაფრთხილებები" + "საგანგებო გაფრთხილება" + "საგანგებო გაფრთხილება" + "საგანგებო გაფრთხილება" + "საგანგებო გაფრთხილება" + "გამაფრთხილებელი განგაში" + "სატესტო გაფრთხილება" + "ვარჯიში" + "საჯარო უსაფრთხოების გაფრთხილება" + "სატესტო გაფრთხილება" + "გამაფრთხილებელი შეტყობინებები" + "საჯარო უსაფრთხოების გაფრთხილებები" + "სატესტო გაფრთხილებები" + diff --git a/res/values-mcc427-kk/strings.xml b/res/values-mcc427-kk/strings.xml new file mode 100644 index 000000000..653df3a31 --- /dev/null +++ b/res/values-mcc427-kk/strings.xml @@ -0,0 +1,34 @@ + + + + + "Елдегі төтенше жағдай дабылы" + "Алғашқы ескерту (ел бойынша ескертуден бөлек) берілген соң, бас тарту диалогтік терезесі шығады." + "Елдегі төтенше жағдай дабылдары" + "Төтенше жағдай дабылы" + "Төтенше жағдай дабылы" + "Төтенше жағдай дабылы" + "Төтенше жағдай дабылы" + "Дабыл" + "Сынақ хабарландыру" + "Жаттығу" + "Жалпы қауіпсіздік дабылы" + "Сынақ дабыл" + "Дабылдар" + "Жалпы қауіпсіздік дабылдары" + "Сынақ дабылдар" + diff --git a/res/values-mcc427-km/strings.xml b/res/values-mcc427-km/strings.xml new file mode 100644 index 000000000..7b3f7c2cc --- /dev/null +++ b/res/values-mcc427-km/strings.xml @@ -0,0 +1,34 @@ + + + + + "ការជូនដំណឹងពេលមានអាសន្នថ្នាក់ជាតិ" + "បង្ហាញ​ប្រអប់​សម្រាប់ការផ្តាច់ចេញ បន្ទាប់ពី​បង្ហាញ​ការជូនដំណឹង​ដំបូង (ក្រៅពីការជូនដំណឹង​ថ្នាក់ជាតិ)។" + "ការជូនដំណឹងពេលមានអាសន្នថ្នាក់ជាតិ" + "ការជូនដំណឹងពេលមានអាសន្ន" + "ការជូនដំណឹងពេលមានអាសន្ន" + "ការជូនដំណឹងពេលមានអាសន្ន" + "ការជូនដំណឹងពេលមានអាសន្ន" + "ការជូនដំណឹង​អំពីការព្រមាន" + "ការ​ជូន​ដំណឹងអំពីការសាកល្បង" + "លំហាត់ប្រាណ" + "ការជូនដំណឹង​អំពីសុវត្ថិភាព​សាធារណៈ" + "ការ​ជូន​ដំណឹងសាកល្បង" + "ការជូនដំណឹង​អំពី​ការព្រមាន" + "ការជូនដំណឹង​អំពីសុវត្ថិភាព​សាធារណៈ" + "ការជូនដំណឹង​សាកល្បង" + diff --git a/res/values-mcc427-kn/strings.xml b/res/values-mcc427-kn/strings.xml new file mode 100644 index 000000000..664321954 --- /dev/null +++ b/res/values-mcc427-kn/strings.xml @@ -0,0 +1,34 @@ + + + + + "ರಾಷ್ಟ್ರೀಯ ತುರ್ತು ಎಚ್ಚರಿಕೆ" + "ಮೊದಲ ಎಚ್ಚರಿಕೆಯನ್ನು (ರಾಷ್ಟ್ರೀಯ ಎಚ್ಚರಿಕೆ ಹೊರತುಪಡಿಸಿ) ಪ್ರದರ್ಶಿಸಿದ ಬಳಿಕ ಆಯ್ಕೆಯಿಂದ ಹೊರಗುಳಿದ ಸಂವಾದ ತೋರಿಸಿ." + "ರಾಷ್ಟ್ರೀಯ ತುರ್ತು ಎಚ್ಚರಿಕೆಗಳು" + "ತುರ್ತು ಎಚ್ಚರಿಕೆ" + "ತುರ್ತು ಎಚ್ಚರಿಕೆ" + "ತುರ್ತು ಎಚ್ಚರಿಕೆ" + "ತುರ್ತು ಎಚ್ಚರಿಕೆ" + "ಎಚ್ಚರಿಕೆ ಅಲರ್ಟ್" + "ಪರೀಕ್ಷೆ ಎಚ್ಚರಿಕೆ" + "ವ್ಯಾಯಾಮ" + "ಸಾರ್ವಜನಿಕ ಸುರಕ್ಷತೆಯ ಎಚ್ಚರಿಕೆ" + "ಪರೀಕ್ಷೆ ಎಚ್ಚರಿಕೆ" + "ಎಚ್ಚರಿಕೆ ಅಲರ್ಟ್‌ಗಳು" + "ಸಾರ್ವಜನಿಕ ಸುರಕ್ಷತೆಯ ಎಚ್ಚರಿಕೆಗಳು" + "ಪರೀಕ್ಷೆ ಅಲರ್ಟ್‌ಗಳು" + diff --git a/res/values-mcc427-ko/strings.xml b/res/values-mcc427-ko/strings.xml new file mode 100644 index 000000000..4139ac2fd --- /dev/null +++ b/res/values-mcc427-ko/strings.xml @@ -0,0 +1,34 @@ + + + + + "국가 비상사태 알림" + "전국 경보가 아닌 첫 번째 경보를 표시한 후 선택 해제 대화상자를 표시합니다." + "국가 비상사태 알림" + "비상사태 알림" + "비상사태 알림" + "비상사태 알림" + "비상사태 알림" + "경고 알림" + "테스트 알림 문자" + "안전 훈련" + "공공 안전 알림" + "테스트 알림" + "경고 알림" + "안전 안내 알림" + "테스트 알림" + diff --git a/res/values-mcc427-ky/strings.xml b/res/values-mcc427-ky/strings.xml new file mode 100644 index 000000000..a58b89cc3 --- /dev/null +++ b/res/values-mcc427-ky/strings.xml @@ -0,0 +1,34 @@ + + + + + "Жалпы улуттук шашылыш билдирүү" + "Биринчи шашылыш билдирүү келгенден кийин дароо өчүрүп салуу сунушталат (Жалпы улуттуктан башка)." + "Жалпы улуттук шашылыш билдирүүлөр" + "Шашылыш билдирүү" + "Шашылыш билдирүү" + "Шашылыш билдирүү" + "Шашылыш билдирүү" + "Эскертүү" + "Сынамык шашылыш билдирүү" + "Машыгуу сигналы" + "Коомдук коопсуздукка жаралган коркунуч билдирүүсү" + "Сынамык шашылыш билдирүү" + "Эскертүүлөр" + "Коомдук коопсуздукка келтирилген коркунуч тууралуу билдирүүлөр" + "Сынамык билдирүүлөр" + diff --git a/res/values-mcc427-lo/strings.xml b/res/values-mcc427-lo/strings.xml new file mode 100644 index 000000000..15f60ee9c --- /dev/null +++ b/res/values-mcc427-lo/strings.xml @@ -0,0 +1,34 @@ + + + + + "ແຈ້ງເຕືອນສຸກເສີນລະດັບປະເທດ" + "ສະແດງໜ້າຈໍປິດຮັບຂໍ້ມູນຫຼັງຈາກການສະແດງແຈ້ງເຕືອນທຳອິດ (ນອກເໜືອໄປຈາກການເຕືອນລະດັບປະເທດ)." + "ແຈ້ງເຕືອນສຸກເສີນລະດັບປະເທດ" + "ແຈ້ງເຕືອນສຸກເສີນ" + "ແຈ້ງເຕືອນສຸກເສີນ" + "ແຈ້ງເຕືອນສຸກເສີນ" + "ແຈ້ງເຕືອນສຸກເສີນ" + "ແຈ້ງເຕືອນຄຳເຕືອນ" + "ການແຈ້ງເຕືອນທົດສອບ" + "ອອກກຳລັງກາຍ" + "ແຈ້ງເຕືອນຄວາມປອດໄພສາທາລະນະ" + "ແຈ້ງເຕືອນທົດສອບ" + "ແຈ້ງເຕືອນຄຳເຕືອນ" + "ແຈ້ງເຕືອນຄວາມປອດໄພສາທາລະນະ" + "ແຈ້ງເຕືອນທົດສອບ" + diff --git a/res/values-mcc427-lt/strings.xml b/res/values-mcc427-lt/strings.xml new file mode 100644 index 000000000..cdb04226a --- /dev/null +++ b/res/values-mcc427-lt/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nacionalinis įspėjimas apie kritinę padėtį" + "Rodyti atsisakymo dialogo langą pateikus pirmą įspėjimą (ne nacionalinį įspėjimą)." + "Nacional. įspėjimai apie kritinę padėtį" + "Įspėjimas apie kritinę padėtį" + "Įspėjimas apie kritinę padėtį" + "Įspėjimas apie kritinę padėtį" + "Įspėjimas apie kritinę padėtį" + "Įspėjimas" + "Bandomasis įspėjimas" + "Mankšta" + "Visuomenės saugumo įspėjimas" + "Bandomasis įspėjimas" + "Įspėjimai" + "Visuomenės saugumo įspėjimai" + "Bandomieji įspėjimai" + diff --git a/res/values-mcc427-lv/strings.xml b/res/values-mcc427-lv/strings.xml new file mode 100644 index 000000000..4a72edb2f --- /dev/null +++ b/res/values-mcc427-lv/strings.xml @@ -0,0 +1,34 @@ + + + + + "Valsts līmeņa ārkārtas brīdinājums" + "Rādīt atteikšanās dialoglodziņu pēc pirmā brīdinājuma (kurš nav valsts līmeņa brīdinājums)" + "Valsts līmeņa ārkārtas brīdinājumi" + "Ārkārtas brīdinājums" + "Ārkārtas brīdinājums" + "Ārkārtas brīdinājums" + "Ārkārtas brīdinājums" + "Brīdinājums" + "Testa brīdinājums" + "Mācību trauksme" + "Brīdinājums par sabiedrisko drošību" + "Testa brīdinājums" + "Brīdinājumi" + "Brīdinājumi par sabiedrisko drošību" + "Testa brīdinājumi" + diff --git a/res/values-mcc427-mk/strings.xml b/res/values-mcc427-mk/strings.xml new file mode 100644 index 000000000..2f5813009 --- /dev/null +++ b/res/values-mcc427-mk/strings.xml @@ -0,0 +1,34 @@ + + + + + "Предупредување за национален итен случај" + "Прикажи дијалог за откажување по првото предупредување (освен за „Национално предупредување“)." + "Предупредувања за национален итен случај" + "Предупредување за итен случај" + "Предупредување за итен случај" + "Предупредување за итен случај" + "Предупредување за итен случај" + "Предупредување за опомена" + "Пробно предупредување" + "Вежба" + "Предупредување за јавна безбедност" + "Пробно предупредување" + "Предупредувања за опомена" + "Предупредувања за јавна безбедност" + "Пробни предупредувања" + diff --git a/res/values-mcc427-ml/strings.xml b/res/values-mcc427-ml/strings.xml new file mode 100644 index 000000000..9bb6fa95f --- /dev/null +++ b/res/values-mcc427-ml/strings.xml @@ -0,0 +1,34 @@ + + + + + "ദേശീയ അടിയന്തര മുന്നറിയിപ്പ്" + "ആദ്യത്തെ മുന്നറിയിപ്പിന് ശേഷം ഒരു ഒഴിവാക്കൽ ഡയലോഗ് കാണിക്കുക (ദേശീയ മുന്നറിയിപ്പ് കൂടാതെ)." + "ദേശീയ അടിയന്തര മുന്നറിയിപ്പുകൾ" + "അടിയന്തര മുന്നറിയിപ്പ്" + "അടിയന്തര മുന്നറിയിപ്പ്" + "അടിയന്തര മുന്നറിയിപ്പ്" + "അടിയന്തര മുന്നറിയിപ്പ്" + "മുന്നറിയിപ്പ്" + "പരീക്ഷണ മുന്നറിയിപ്പ്" + "വ്യായാമം" + "പൊതു സുരക്ഷാ മുന്നറിയിപ്പ്" + "പരീക്ഷണ മുന്നറിയിപ്പ്" + "മുന്നറിയിപ്പുകൾ" + "പൊതു സുരക്ഷാ മുന്നറിയിപ്പുകൾ" + "പരിശോധനാ മുന്നറിയിപ്പുകൾ" + diff --git a/res/values-mcc427-mn/strings.xml b/res/values-mcc427-mn/strings.xml new file mode 100644 index 000000000..7c498abbe --- /dev/null +++ b/res/values-mcc427-mn/strings.xml @@ -0,0 +1,34 @@ + + + + + "Улсын онцгой байдлын сэрэмжлүүлэг" + "Эхний сэрэмжлүүлгийг (Үндэсний сэрэмжлүүлгээс бусад) харуулсны дараa татгалзах харилцах цонх харуул." + "Улсын онцгой байдлын сэрэмжлүүлэг" + "Онцгой байдлын сэрэмжлүүлэг" + "Онцгой байдлын сэрэмжлүүлэг" + "Онцгой байдлын сэрэмжлүүлэг" + "Онцгой байдлын сэрэмжлүүлэг" + "Анхааруулах сэрэмжлүүлэг" + "Туршилтын сэрэмжлүүлэг" + "Дасгал" + "Олон нийтийн аюулгүй байдлын сэрэмжлүүлэг" + "Туршилтын сэрэмжлүүлэг" + "Анхааруулах сэрэмжлүүлэг" + "Олон нийтийн аюулгүй байдлын сэрэмжлүүлэг" + "Туршилтын сэрэмжлүүлэг" + diff --git a/res/values-mcc427-mr/strings.xml b/res/values-mcc427-mr/strings.xml new file mode 100644 index 000000000..986675738 --- /dev/null +++ b/res/values-mcc427-mr/strings.xml @@ -0,0 +1,34 @@ + + + + + "राष्ट्रीय आणीबाणी सूचना" + "पहिली सूचना (राष्ट्रीय सूचनेव्यतिरिक्त) डिस्प्ले केल्यानंतर निवड रद्द करा डायलॉग दाखवा." + "राष्ट्रीय आणीबाणी सूचना" + "आणीबाणी सूचना" + "आणीबाणी सूचना" + "आणीबाणी सूचना" + "आणीबाणी सूचना" + "चेतावणी सूचना" + "चाचणीची सूचना" + "ड्रिल" + "सार्वजनिक सुरक्षितता सूचना" + "चाचणी सूचना" + "चेतावणी सूचना" + "सार्वजनिक सुरक्षितता सूचना" + "चाचणी सूचना" + diff --git a/res/values-mcc427-ms/strings.xml b/res/values-mcc427-ms/strings.xml new file mode 100644 index 000000000..4abb14bd4 --- /dev/null +++ b/res/values-mcc427-ms/strings.xml @@ -0,0 +1,34 @@ + + + + + "Makluman Kecemasan Kebangsaan" + "Tunjukkan dialog tarik diri selepas memaparkan makluman yang pertama (selain makluman Kebangsaan)." + "Makluman Kecemasan Kebangsaan" + "Makluman Kecemasan" + "Makluman Kecemasan" + "Makluman Kecemasan" + "Makluman Kecemasan" + "Makluman Amaran" + "Makluman Ujian" + "Latihan" + "Makluman Keselamatan Awam" + "Makluman Ujian" + "Makluman amaran" + "Makluman keselamatan awam" + "Makluman ujian" + diff --git a/res/values-mcc427-my/strings.xml b/res/values-mcc427-my/strings.xml new file mode 100644 index 000000000..d70f8993a --- /dev/null +++ b/res/values-mcc427-my/strings.xml @@ -0,0 +1,34 @@ + + + + + "နိုင်ငံအဆင့် အရေးပေါ်သတိပေးချက်" + "ပထမ သတိပေးချက် (နိုင်ငံတော်အဆင့် သတိပေးချက်မှလွဲ၍) ပြပြီးနောက် ထွက်ရန်ဒိုင်ယာလော့ခ်ကို ပြပါ။" + "နိုင်ငံအဆင့် အရေးပေါ်သတိပေးချက်များ" + "အရေးပေါ်သတိပေးချက်" + "အရေးပေါ်သတိပေးချက်" + "အရေးပေါ်သတိပေးချက်" + "အရေးပေါ်သတိပေးချက်" + "သတိပေး နှိုးဆော်ချက်" + "စစ်ဆေးမှု သတိပေးချက်" + "လေ့ကျင့်ရေး" + "လူထုလုံခြုံရေး သတိပေးချက်" + "စမ်းသပ် သတိပေးချက်" + "သတိပေး နှိုးဆော်ချက်များ" + "လူထုလုံခြုံရေး သတိပေးချက်များ" + "စမ်းသပ် သတိပေးချက်များ" + diff --git a/res/values-mcc427-nb/strings.xml b/res/values-mcc427-nb/strings.xml new file mode 100644 index 000000000..5f613bae5 --- /dev/null +++ b/res/values-mcc427-nb/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nasjonalt nødvarsel" + "Vis en bortvelgingsdialog etter det første varselet (gjelder ikke for nasjonale varsler)." + "Nasjonale nødvarsler" + "Nødvarsel" + "Nødvarsel" + "Nødvarsel" + "Nødvarsel" + "Varsel" + "Testvarsel" + "Øvelse" + "Offentlig sikkerhetsvarsel" + "Testvarsel" + "Varsler" + "Offentlige sikkerhetsvarsler" + "Testvarsler" + diff --git a/res/values-mcc427-ne/strings.xml b/res/values-mcc427-ne/strings.xml new file mode 100644 index 000000000..eb0232b1a --- /dev/null +++ b/res/values-mcc427-ne/strings.xml @@ -0,0 +1,34 @@ + + + + + "राष्ट्रिय आपत्‌कालीन अलर्ट" + "पहिलो अलर्ट देखाएपछि बाहिरिने डायलग देखाइयोस् (राष्ट्रव्यापी अलर्टबाहेक)।" + "राष्ट्रिय आपत्‌कालीन अलर्टहरू" + "आपत्‌कालीन अलर्ट" + "आपत्‌कालीन अलर्ट" + "आपत्‌कालीन अलर्ट" + "आपत्‌कालीन अलर्ट" + "चेतावनीसम्बन्धी अलर्ट" + "परीक्षणसम्बन्धी अलर्ट" + "कसरत" + "सार्वजनिक सुरक्षासम्बन्धी अलर्ट" + "परीक्षणसम्बन्धी अलर्ट" + "चेतावनीसम्बन्धी अलर्टहरू" + "सार्वजनिक सुरक्षासम्बन्धी अलर्टहरू" + "परीक्षणसम्बन्धी अलर्टहरू" + diff --git a/res/values-mcc427-nl/strings.xml b/res/values-mcc427-nl/strings.xml new file mode 100644 index 000000000..61023e279 --- /dev/null +++ b/res/values-mcc427-nl/strings.xml @@ -0,0 +1,34 @@ + + + + + "Nationale noodmelding" + "Een toestemmingsvenster tonen na de eerste melding (geen nationale melding)." + "Nationale noodmeldingen" + "Noodmelding" + "Noodmelding" + "Noodmelding" + "Noodmelding" + "Waarschuwingsmelding" + "Testmelding" + "Oefening" + "Openbare veiligheidsmelding" + "Testmelding" + "Waarschuwingsmeldingen" + "Openbare veiligheidsmeldingen" + "Testmeldingen" + diff --git a/res/values-mcc427-or/strings.xml b/res/values-mcc427-or/strings.xml new file mode 100644 index 000000000..0b8eb489e --- /dev/null +++ b/res/values-mcc427-or/strings.xml @@ -0,0 +1,34 @@ + + + + + "ଜାତୀୟ ଜରୁରୀକାଳୀନ ଆଲର୍ଟ" + "ପ୍ରଥମ ଆଲର୍ଟ (ଜାତୀୟ ଆଲର୍ଟ ବ୍ୟତୀତ ଅନ୍ୟ କିଛି) ଡିସପ୍ଲେ କରିବା ପରେ ଏକ ଅପ୍ଟ-ଆଉଟ୍ ଡାଏଲଗ୍ ଦେଖାନ୍ତୁ।" + "ଜାତୀୟ ଜରୁରୀକାଳୀନ ଆଲର୍ଟଗୁଡ଼ିକ" + "ଜରୁରୀକାଳୀନ ଆଲର୍ଟ" + "ଜରୁରୀକାଳୀନ ଆଲର୍ଟ" + "ଜରୁରୀକାଳୀନ ଆଲର୍ଟ" + "ଜରୁରୀକାଳୀନ ଆଲର୍ଟ" + "ଚେତାବନୀ ଆଲର୍ଟ" + "ପରୀକ୍ଷା ଆଲର୍ଟ" + "ବ୍ୟାୟାମ" + "ସାର୍ବଜନୀନ ସୁରକ୍ଷା ଆଲର୍ଟ" + "ଟେଷ୍ଟ ଆଲର୍ଟ" + "ଚେତାବନୀ ଆଲର୍ଟଗୁଡ଼ିକ" + "ସାର୍ବଜନୀନ ସୁରକ୍ଷା ଆଲର୍ଟଗୁଡ଼ିକ" + "ଟେଷ୍ଟ ଆଲର୍ଟଗୁଡ଼ିକ" + diff --git a/res/values-mcc427-pa/strings.xml b/res/values-mcc427-pa/strings.xml new file mode 100644 index 000000000..838868a9d --- /dev/null +++ b/res/values-mcc427-pa/strings.xml @@ -0,0 +1,34 @@ + + + + + "ਰਾਸ਼ਟਰੀ ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾ" + "ਪਹਿਲੀ ਸੁਚੇਤਨਾ ਦਿਖਾਉਣ ਤੋਂ ਬਾਅਦ ਹਟਣ ਦੀ ਚੋਣ ਸੰਬੰਧੀ ਇੱਕ ਵਿੰਡੋ ਦਿਖਾਓ (ਰਾਸ਼ਟਰੀ ਸੁਚੇਤਨਾ ਤੋਂ ਇਲਾਵਾ)।" + "ਰਾਸ਼ਟਰੀ ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾਵਾਂ" + "ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾ" + "ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾ" + "ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾ" + "ਐਮਰਜੈਂਸੀ ਸੁਚੇਤਨਾ" + "ਚਿਤਾਵਨੀ ਸੁਚੇਤਨਾ" + "ਜਾਂਚ ਸੁਚੇਤਨਾ" + "ਕਸਰਤ" + "ਜਨਤਕ ਸੁਰੱਖਿਆ ਸੁਚੇਤਨਾ" + "ਜਾਂਚ ਸੁਚੇਤਨਾ" + "ਚਿਤਾਵਨੀ ਸੁਚੇਤਨਾਵਾਂ" + "ਜਨਤਕ ਸੁਰੱਖਿਆ ਸੁਚੇਤਨਾਵਾਂ" + "ਜਾਂਚ ਸੁਚੇਤਨਾਵਾਂ" + diff --git a/res/values-mcc427-pl/strings.xml b/res/values-mcc427-pl/strings.xml new file mode 100644 index 000000000..9458d780c --- /dev/null +++ b/res/values-mcc427-pl/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alert o zagrożeniu krajowym" + "Pokaż okno rezygnacji po wyświetleniu pierwszego alertu (innego niż alert krajowy)" + "Alerty o zagrożeniu krajowym" + "Alert o zagrożeniu" + "Alert o zagrożeniu" + "Alert o zagrożeniu" + "Alert o zagrożeniu" + "Alert z ostrzeżeniem" + "Alert testowy" + "Testy" + "Alert dotyczący bezpieczeństwa publicznego" + "Alert testowy" + "Alerty z ostrzeżeniami" + "Alerty dotyczące bezpieczeństwa publicznego" + "Alerty testowe" + diff --git a/res/values-mcc427-pt-rPT/strings.xml b/res/values-mcc427-pt-rPT/strings.xml new file mode 100644 index 000000000..63b2310d6 --- /dev/null +++ b/res/values-mcc427-pt-rPT/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta de emergência nacional" + "Mostrar uma caixa de diálogo de recusa após apresentar o 1.º alerta (para além do Alerta nacional)." + "Alertas de emergência nacional" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de aviso" + "Alerta de teste" + "Exercício" + "Alerta de segurança pública" + "Alerta de teste" + "Alertas de aviso" + "Alertas de segurança pública" + "Alertas de teste" + diff --git a/res/values-mcc427-pt/strings.xml b/res/values-mcc427-pt/strings.xml new file mode 100644 index 000000000..ef07e198a --- /dev/null +++ b/res/values-mcc427-pt/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerta de emergência nacional" + "Mostrar caixa de diálogo de desativação após exibir o primeiro alerta. Exceção: alerta nacional." + "Alertas de emergência nacional" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de emergência" + "Alerta de aviso" + "Alerta de teste" + "Exercício" + "Alerta de segurança pública" + "Alerta de teste" + "Alertas de aviso" + "Alertas de segurança pública" + "Alertas de teste" + diff --git a/res/values-mcc427-ro/strings.xml b/res/values-mcc427-ro/strings.xml new file mode 100644 index 000000000..4262a9f93 --- /dev/null +++ b/res/values-mcc427-ro/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alertă de urgență națională" + "Afișează un dialog de renunțare după afișarea primei alerte (alta decât alerta națională)." + "Alerte de urgență naționale" + "Alertă de urgență" + "Alertă de urgență" + "Alertă de urgență" + "Alertă de urgență" + "Alertă de atenționare" + "Alertă de testare" + "Exercițiu" + "Alertă publică privind siguranța" + "Alertă de testare" + "Alerte de atenționare" + "Alerte publice privind siguranța" + "Alerte de testare" + diff --git a/res/values-mcc427-ru/strings.xml b/res/values-mcc427-ru/strings.xml new file mode 100644 index 000000000..b007291b7 --- /dev/null +++ b/res/values-mcc427-ru/strings.xml @@ -0,0 +1,34 @@ + + + + + "Экстренное оповещение населения" + "Предлагать отключить после первого оповещения (кроме общенационального)" + "Экстренные оповещения населения" + "Экстренное оповещение" + "Экстренное оповещение" + "Экстренное оповещение" + "Экстренное оповещение" + "Предупреждение" + "Тестовое оповещение" + "Учебная тревога" + "Оповещение об угрозе общественной безопасности" + "Тестовое оповещение" + "Предупреждения" + "Оповещения об угрозе общественной безопасности" + "Тестовые оповещения" + diff --git a/res/values-mcc427-si/strings.xml b/res/values-mcc427-si/strings.xml new file mode 100644 index 000000000..21bb20aad --- /dev/null +++ b/res/values-mcc427-si/strings.xml @@ -0,0 +1,34 @@ + + + + + "ජාතික හදිසි අවස්ථා ඇඟවීම" + "පළමු අනතුරු ඇඟවීම සංදර්ශනය කිරීමෙන් පසුව ඉවත් වීමේ සංවාදයක් (ජාතික ඇඟවීම හැර) පෙන්වන්න." + "ජාතික හදිසි අවස්ථා ඇඟවීම්" + "හදිසි අවස්ථා ඇඟවීම" + "හදිසි අවස්ථා ඇඟවීම" + "හදිසි අවස්ථා ඇඟවීම" + "හදිසි අවස්ථා ඇඟවීම" + "අනතුරු ඇඟවීම" + "පරීක්ෂණ ඇඟවීම" + "ව්‍යායාමය" + "පොදු ආරක්ෂාව පිළිබඳ ඇඟවීම" + "පරීක්ෂණ ඇඟවීම" + "අනතුරු ඇඟවීම්" + "පොදු ආරක්ෂාව පිළිබඳ ඇඟවීම්" + "පරීක්ෂණ ඇඟවීම්" + diff --git a/res/values-mcc427-sk/strings.xml b/res/values-mcc427-sk/strings.xml new file mode 100644 index 000000000..a4af9d79d --- /dev/null +++ b/res/values-mcc427-sk/strings.xml @@ -0,0 +1,34 @@ + + + + + "Celoštátne tiesňové varovanie" + "Zobraziť dialógové okno na odhlásenie po prvom varovaní (okrem celoštátneho varovania)" + "Celoštátne tiesňové varovania" + "Tiesňové varovanie" + "Tiesňové varovanie" + "Tiesňové varovanie" + "Tiesňové varovanie" + "Varovanie" + "Testovacie upozornenie" + "Cvičenie" + "Varovanie verejnej bezpečnosti" + "Testovacie varovanie" + "Varovania" + "Varovania verejnej bezpečnosti" + "Testovacie varovania" + diff --git a/res/values-mcc427-sl/strings.xml b/res/values-mcc427-sl/strings.xml new file mode 100644 index 000000000..bb42f988f --- /dev/null +++ b/res/values-mcc427-sl/strings.xml @@ -0,0 +1,34 @@ + + + + + "Državno opozorilo v sili" + "Po prikazu prvega opozorila (ki ni državno opozorilo) pokaži pogovorno okno za onemogočenje." + "Državna opozorila v sili" + "Opozorilo v sili" + "Opozorilo v sili" + "Opozorilo v sili" + "Opozorilo v sili" + "Opozorilo" + "Preizkusno opozorilo" + "Vaja" + "Opozorilo za javno varnost" + "Preizkusno opozorilo" + "Opozorila" + "Opozorila za javno varnost" + "Preizkusna opozorila" + diff --git a/res/values-mcc427-sq/strings.xml b/res/values-mcc427-sq/strings.xml new file mode 100644 index 000000000..faf34a918 --- /dev/null +++ b/res/values-mcc427-sq/strings.xml @@ -0,0 +1,34 @@ + + + + + "Sinjalizim urgjence kombëtare" + "Shfaq dialogun e tërheqjes pas shfaqjes së sinjalizimit të parë (përveç \"Sinjalizimit kombëtar\")." + "Sinjalizime urgjence kombëtare" + "Sinjalizim urgjence" + "Sinjalizim urgjence" + "Sinjalizim urgjence" + "Sinjalizim urgjence" + "Sinjalizim paralajmërues" + "Sinjalizim testimi" + "Ushtrim" + "Sinjalizim i sigurisë publike" + "Sinjalizim testimi" + "Sinjalizime paralajmëruese" + "Sinjalizime të sigurisë publike" + "Sinjalizime testimi" + diff --git a/res/values-mcc427-sr/strings.xml b/res/values-mcc427-sr/strings.xml new file mode 100644 index 000000000..139b16d02 --- /dev/null +++ b/res/values-mcc427-sr/strings.xml @@ -0,0 +1,34 @@ + + + + + "Обавештење о хитном случају на нивоу земље" + "Прикажи дијалог за онемогућавање после приказа првог упозорења (осим упозорења на нивоу земље)." + "Обавештења – хитан случај на нивоу земље" + "Обавештење о хитном случају" + "Обавештење о хитном случају" + "Обавештење о хитном случају" + "Обавештење о хитном случају" + "Обавештење о упозорењу" + "Пробно обавештење" + "Вежбање" + "Обавештење о јавној безбедности" + "Пробно обавештење" + "Обавештења о упозорењима" + "Обавештења о јавној безбедности" + "Пробна обавештења" + diff --git a/res/values-mcc427-sv/strings.xml b/res/values-mcc427-sv/strings.xml new file mode 100644 index 000000000..04626ec84 --- /dev/null +++ b/res/values-mcc427-sv/strings.xml @@ -0,0 +1,34 @@ + + + + + "Varning om nationell nödsituation" + "Visa en dialogruta för att välja bort detta när första varningen visas (ej nationella varningar)." + "Nationella varningsmeddelanden" + "Varning om nödsituation" + "Varning om nödsituation" + "Varning om nödsituation" + "Varning om nödsituation" + "Varningsmeddelande" + "Testvarning" + "Träning" + "Säkerhetsvarning till allmänheten" + "Testvarning" + "Varningsmeddelanden" + "Säkerhetsvarningar till allmänheten" + "Testvarningar" + diff --git a/res/values-mcc427-sw/strings.xml b/res/values-mcc427-sw/strings.xml new file mode 100644 index 000000000..a6d562151 --- /dev/null +++ b/res/values-mcc427-sw/strings.xml @@ -0,0 +1,34 @@ + + + + + "Tahadhari ya Dharura ya Kitaifa" + "Onyesha kidirisha cha kujiondoa baada ya kuonyesha arifa ya kwanza (kando na Arifa ya kitaifa)." + "Tahadhari za Dharura za Kitaifa" + "Arifa ya Dharura" + "Arifa ya Dharura" + "Arifa ya Dharura" + "Arifa ya Dharura" + "Tahadhari" + "Arifa ya Jaribio" + "Mazoezi" + "Tahadhari ya Usalama kwa Umma" + "Tahadhari ya Jaribio" + "Tahadhari" + "Tahadhari za usalama kwa umma" + "Tahadhari za majaribio" + diff --git a/res/values-mcc427-ta/strings.xml b/res/values-mcc427-ta/strings.xml new file mode 100644 index 000000000..620074438 --- /dev/null +++ b/res/values-mcc427-ta/strings.xml @@ -0,0 +1,34 @@ + + + + + "தேசிய அளவிலான அவசரகால எச்சரிக்கை" + "முதல் விழிப்பூட்டலை (தேசிய அளவிலான எச்சரிக்கையைத் தவிர்த்து) காட்டிய பிறகு விலகல் செய்தியைக் காட்டு." + "தேசிய அளவிலான அவசரகால எச்சரிக்கைகள்" + "அவசரகால எச்சரிக்கை" + "அவசரகால எச்சரிக்கை" + "அவசரகால எச்சரிக்கை" + "அவசரகால எச்சரிக்கை" + "அபாய எச்சரிக்கை" + "பரிசோதனை எச்சரிக்கை" + "பயிற்சி" + "பொதுப் பாதுகாப்பு எச்சரிக்கை" + "பரிசோதனை எச்சரிக்கை" + "அபாய எச்சரிக்கைகள்" + "பொதுப் பாதுகாப்பு எச்சரிக்கைகள்" + "பரிசோதனை எச்சரிக்கைகள்" + diff --git a/res/values-mcc427-te/strings.xml b/res/values-mcc427-te/strings.xml new file mode 100644 index 000000000..89d0f5f07 --- /dev/null +++ b/res/values-mcc427-te/strings.xml @@ -0,0 +1,34 @@ + + + + + "జాతీయ ఎమర్జెన్సీ అలర్ట్" + "మొదటి అలర్ట్‌ను (జాతీయ అలర్ట్ మినహా) ప్రదర్శించిన తర్వాత నిలిపివేత డైలాగ్‌ను చూపించండి." + "జాతీయ ఎమర్జెన్సీ అలర్ట్‌లు" + "అత్యవసర అలర్ట్" + "అత్యవసర అలర్ట్" + "అత్యవసర అలర్ట్" + "అత్యవసర అలర్ట్" + "హెచ్చరిక అలర్ట్" + "పరీక్ష అలర్ట్" + "వ్యాయామం" + "పబ్లిక్ భద్రత అలర్ట్" + "పరీక్ష అలర్ట్" + "హెచ్చరిక అలర్ట్‌లు" + "పబ్లిక్ భద్రత అలర్ట్‌లు" + "పరీక్ష అలర్ట్‌లు" + diff --git a/res/values-mcc427-th/strings.xml b/res/values-mcc427-th/strings.xml new file mode 100644 index 000000000..3a2f497ae --- /dev/null +++ b/res/values-mcc427-th/strings.xml @@ -0,0 +1,34 @@ + + + + + "การแจ้งเตือนเหตุฉุกเฉินระดับชาติ" + "แสดงกล่องโต้ตอบเพื่อเลือกไม่รับหลังจากแสดงการแจ้งเตือนแรก (นอกเหนือจากการแจ้งเตือนระดับประเทศ)" + "การแจ้งเตือนเหตุฉุกเฉินระดับชาติ" + "การแจ้งเตือนเหตุฉุกเฉิน" + "การแจ้งเตือนเหตุฉุกเฉิน" + "การแจ้งเตือนเหตุฉุกเฉิน" + "การแจ้งเตือนเหตุฉุกเฉิน" + "การแจ้งเตือนภัย" + "การแจ้งเตือนการทดสอบ" + "ออกกำลังกาย" + "การแจ้งเตือนด้านความปลอดภัยสาธารณะ" + "การแจ้งเตือนการทดสอบ" + "การเตือนภัย" + "การแจ้งเตือนด้านความปลอดภัยสาธารณะ" + "การแจ้งเตือนการทดสอบ" + diff --git a/res/values-mcc427-tl/strings.xml b/res/values-mcc427-tl/strings.xml new file mode 100644 index 000000000..08e49b695 --- /dev/null +++ b/res/values-mcc427-tl/strings.xml @@ -0,0 +1,34 @@ + + + + + "Alerto para sa Pambansang Emergency" + "Magpakita ng dialog sa pag-opt out pagkatapos ipakita ang unang alerto (bukod sa Pambansang Alerto)." + "Mga Alerto para sa Pambansang Emergency" + "Alerto sa Emergency" + "Alerto sa Emergency" + "Alerto sa Emergency" + "Alerto sa Emergency" + "Alertong Babala" + "Pansubok na Alerto" + "Mag-ehersisyo" + "Alerto para sa Pampublikong Kaligtasan" + "Pansubok na Alerto" + "Mga alertong babala" + "Mga alerto sa pampublikong kaligtasan" + "Mga pansubok na alerto" + diff --git a/res/values-mcc427-tr/strings.xml b/res/values-mcc427-tr/strings.xml new file mode 100644 index 000000000..8a12c3892 --- /dev/null +++ b/res/values-mcc427-tr/strings.xml @@ -0,0 +1,34 @@ + + + + + "Ulusal Düzeyde Acil Durum Uyarısı" + "İlk uyarı (Ulusal düzeyde uyarı hariç) görüntülendikten sonra devre dışı bırakma iletişimini göster." + "Ulusal Acil Durum Uyarıları" + "Acil Durum Uyarısı" + "Acil Durum Uyarısı" + "Acil Durum Uyarısı" + "Acil Durum Uyarısı" + "Uyarı Alarmı" + "Test Amaçlı Uyarı" + "Egzersiz" + "Kamu Güvenliği Uyarısı" + "Test Amaçlı Uyarı" + "Uyarı alarmları" + "Kamu güvenliği uyarıları" + "Test amaçlı uyarılar" + diff --git a/res/values-mcc427-uk/strings.xml b/res/values-mcc427-uk/strings.xml new file mode 100644 index 000000000..527673986 --- /dev/null +++ b/res/values-mcc427-uk/strings.xml @@ -0,0 +1,34 @@ + + + + + "Екстрене сповіщення для всієї країни" + "Пропонувати вимкнути після першого сповіщення (крім тих, які стосуються всієї країни)." + "Екстрені сповіщення для всієї країни" + "Екстрене сповіщення" + "Екстрене сповіщення" + "Екстрене сповіщення" + "Екстрене сповіщення" + "Попередження" + "Тестове сповіщення" + "Тренування" + "Сповіщення щодо громадської безпеки" + "Тестове сповіщення" + "Попередження" + "Сповіщення щодо громадської безпеки" + "Тестові сповіщення" + diff --git a/res/values-mcc427-ur/strings.xml b/res/values-mcc427-ur/strings.xml new file mode 100644 index 000000000..80f2bf42d --- /dev/null +++ b/res/values-mcc427-ur/strings.xml @@ -0,0 +1,34 @@ + + + + + "قومی ایمرجنسی الرٹ" + "پہلا الرٹ (قومی الرٹ کے علاوہ) ڈسپلے کرنے کے بعد ایک آپٹ آؤٹ ڈائیلاگ دکھائیں۔" + "قومی ایمرجنسی الرٹس" + "ایمرجنسی الرٹ" + "ایمرجنسی الرٹ" + "ایمرجنسی الرٹ" + "ایمرجنسی الرٹ" + "وارننگ الرٹ" + "ٹیسٹ الرٹ" + "ورزش" + "عوامی حفاظتی الرٹ" + "ٹیسٹ الرٹ" + "وارننگ الرٹس" + "عوامی حفاظتی الرٹس" + "ٹیسٹ الرٹس" + diff --git a/res/values-mcc427-uz/strings.xml b/res/values-mcc427-uz/strings.xml new file mode 100644 index 000000000..0f52d7dab --- /dev/null +++ b/res/values-mcc427-uz/strings.xml @@ -0,0 +1,34 @@ + + + + + "Milliy favqulodda ogohlantirish" + "Birinchi ogohlantirishdan keyin umummilliy ogohlantirishlarni faolsizlantirishni taklif qilish" + "Milliy favqulodda ogohlantirishlar" + "Favqulodda ogohlantirish" + "Favqulodda ogohlantirish" + "Favqulodda ogohlantirish" + "Favqulodda ogohlantirish" + "Ogohlantirish" + "Sinov ogohlantirishi" + "Mashq" + "Ommaviy xavfsizlik haqida ogohlantirish" + "Sinov ogohlantirishi" + "Ogohlantirishlar" + "Ommaviy xavfsizlik haqida ogohlantirishlar" + "Sinov ogohlantirishlari" + diff --git a/res/values-mcc427-vi/strings.xml b/res/values-mcc427-vi/strings.xml new file mode 100644 index 000000000..c73cd8219 --- /dev/null +++ b/res/values-mcc427-vi/strings.xml @@ -0,0 +1,34 @@ + + + + + "Cảnh báo khẩn cấp của quốc gia" + "Hiển thị hộp thoại chọn không nhận sau khi hiện cảnh báo đầu tiên (trừ Cảnh báo cấp quốc gia)." + "Cảnh báo khẩn cấp của quốc gia" + "Cảnh báo khẩn cấp" + "Cảnh báo khẩn cấp" + "Cảnh báo khẩn cấp" + "Cảnh báo khẩn cấp" + "Cảnh báo" + "Cảnh báo thử nghiệm" + "Tập thể dục" + "Cảnh báo chung về an toàn" + "Cảnh báo thử nghiệm" + "Cảnh báo" + "Cảnh báo chung về an toàn" + "Cảnh báo thử nghiệm" + diff --git a/res/values-mcc427-zh-rCN/strings.xml b/res/values-mcc427-zh-rCN/strings.xml new file mode 100644 index 000000000..ad0bad023 --- /dev/null +++ b/res/values-mcc427-zh-rCN/strings.xml @@ -0,0 +1,34 @@ + + + + + "国家级紧急警报" + "在显示第一条警报(国家/地区级警报除外)后,显示可供用户停用 CMAS 的对话框。" + "国家紧急警报" + "紧急警报" + "紧急警报" + "紧急警报" + "紧急警报" + "警报" + "测试警报" + "演习/模拟" + "公共安全警报" + "测试警报" + "警报" + "公共安全警报" + "测试警报" + diff --git a/res/values-mcc427-zh-rHK/strings.xml b/res/values-mcc427-zh-rHK/strings.xml new file mode 100644 index 000000000..a9b84afcd --- /dev/null +++ b/res/values-mcc427-zh-rHK/strings.xml @@ -0,0 +1,34 @@ + + + + + "國家/地區緊急警示" + "第一次警報出現後顯示停用對話框 (國家級警報除外)。" + "國家/地區緊急警示" + "緊急警示" + "緊急警示" + "緊急警示" + "緊急警示" + "警示" + "測試警示" + "運動" + "公共安全警示" + "測試警示" + "警示" + "公共安全警報" + "測試警示" + diff --git a/res/values-mcc427-zh-rTW/strings.xml b/res/values-mcc427-zh-rTW/strings.xml new file mode 100644 index 000000000..8b81bb8b3 --- /dev/null +++ b/res/values-mcc427-zh-rTW/strings.xml @@ -0,0 +1,34 @@ + + + + + "國家級緊急警報" + "第一次警報出現後顯示停用對話方塊 (國家級警報除外)。" + "國家級緊急警報" + "緊急警報" + "緊急警報" + "緊急警報" + "緊急警報" + "警報" + "測試警報" + "演習" + "公共安全警報" + "測試警報" + "警報" + "公共安全警報" + "測試警報" + diff --git a/res/values-mcc427-zu/strings.xml b/res/values-mcc427-zu/strings.xml new file mode 100644 index 000000000..aff092deb --- /dev/null +++ b/res/values-mcc427-zu/strings.xml @@ -0,0 +1,34 @@ + + + + + "Isexwayiso Esiphuthumayo Sikazwelonke" + "Bonisa ingxoxo yokukhetha ukuphuma ngemuva kokubonisa isexwayiso sokuqala (Ngaphandle Kwesexwayiso Sikazwelonke)." + "Izexwayiso Eziphuthumayo Zikazwelonke" + "Isexwayiso Esiphuthumayo" + "Isexwayiso Esiphuthumayo" + "Isexwayiso Esiphuthumayo" + "Isexwayiso Esiphuthumayo" + "Isexwayiso Sokuxwayisa" + "Isexwayiso Sokuhlola" + "Ukuzivocavoca" + "Isexwayiso Sokuphepha Esidlangalaleni" + "Isexwayiso Sokuhlola" + "Izexwayiso" + "Izexwayiso zokuphepha esidlangalaleni" + "Izexwayiso zohlolo" + diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 8b508e3b3..3102aa99a 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -167,6 +167,8 @@ "Максимално време на чекање:" "секунди" "Пораката е копирана" + + "Кога сте во роаминг, може да добивате некои предупредувања што не се вклучени во поставкиве" "Операторот ги променил поставките" "Допрете за да ги видите поставките за безжичните предупредувања за итни случаи" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 34efca137..9dd94f115 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -167,6 +167,8 @@ "പരമാവധി കാത്തിരിക്കൽ സമയം:" "സെക്കൻഡ്" "സന്ദേശം പകർത്തി" + + "റോമിംഗിലായിരിക്കുമ്പോൾ, ഈ ക്രമീകരണത്തിൽ ഉൾപ്പെടാത്ത ചില മുന്നറിയിപ്പുകൾ നിങ്ങൾക്ക് ലഭിച്ചേക്കാം" "സേവനദാതാവ് ക്രമീകരണം മാറ്റി" "വയർലെസ് അടിയന്തര മുന്നറിയിപ്പ് ക്രമീകരണം കാണാൻ ടാപ്പ് ചെയ്യുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index aa8fd161e..f6050e732 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -167,6 +167,8 @@ "Хамгийн дээд хүлээх хугацаа:" "секунд" "Мессежийг хуулсан" + + "Та роуминг хийж байхдаа эдгээр тохиргоонд багтаагүй зарим сэрэмжлүүлгийг авч магадгүй" "Оператор компани тохиргоог өөрчилсөн" "Утасгүй яаралтай тусламжийн сэрэмжлүүлгийн тохиргоог харахын тулд товшино уу" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index e140d1bf9..05589e661 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -167,6 +167,8 @@ "प्रतीक्षा करण्याची कमाल वेळ:" "सेकंद" "मेसेज कॉपी केला" + + "तुम्ही रोमिंगमध्ये असताना, तुम्हाला या सेटिंग्जमध्ये समाविष्ट नसलेल्या काही सूचना मिळू शकतात" "सेटिंग्ज वाहकाद्वारे बदलली गेली" "वायरलेस आणीबाणी सूचना सेटिंग्ज पाहण्यासाठी टॅप करा" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index af230ec7e..7fc96b067 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -167,6 +167,8 @@ "Masa menunggu maksimum:" "saat" "Mesej disalin" + + "Apabila anda menggunakan perayauan, anda mungkin akan mendapat sesetengah amaran yang tidak disertakan dalam tetapan ini" "Tetapan diubah oleh pembawa" "Ketik untuk melihat tetapan amaran kecemasan wayarles" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index e7c9abf9e..dbb97d7be 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -167,6 +167,8 @@ "အကြာဆုံး စောင့်ဆိုင်းချိန်−" "စက္ကန့်" "မက်ဆေ့ဂျ် မိတ္တူကူးပြီးပြီ" + + "ပြင်ပကွန်ရက်သုံးနေပါက ဤဆက်တင်များတွင် မပါဝင်သည့် သတိပေးချက်များ ရနိုင်ပါသည်" "ဆက်တင်များကို ဝန်ဆောင်မှုပေးသူက ပြောင်းထားသည်" "ကြိုးမဲ့ အရေးပေါ်သတိပေးချက် ဆက်တင်များကို ကြည့်ရန် တို့ပါ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index b75627c53..6ff09030d 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -167,6 +167,8 @@ "Maksimal ventetid:" "sekunder" "Meldingen er kopiert" + + "Når du bruker roaming, kan du motta varsler som ikke er inkludert i disse innstillingene" "Innstillingene er endret av operatøren" "Trykk for å se innstillinger for trådløse nødvarsler" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index bd15f14a9..74e4afd7c 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -167,6 +167,8 @@ "पर्खनु पर्ने अधिकतम समय:" "सेकेन्ड" "सन्देश प्रतिलिपि गरियो" + + "रोमिङ मोडमा हुँदा तपाईं यी सेटिङमा समावेश नभएका केही अलर्टहरू प्राप्त गर्न सक्नुहुन्छ" "सेवा प्रदायकले यी सेटिङ परिवर्तन गरेको छ" "आपत्‌कालीन वायरलेस सतर्कता सूचनासम्बन्धी सेटिङ हेर्न ट्याप गर्नुहोस्" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index f630439e1..dda51f75f 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -167,6 +167,8 @@ "Maximum wachttijd:" "seconden" "Bericht gekopieerd" + + "Tijdens roaming kun je meldingen krijgen die niet zijn opgenomen in deze instellingen" "Instellingen gewijzigd door provider" "Tik om de instellingen voor meldingen voor noodwaarschuwingen te bekijken" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 4798e5fae..dc9e84631 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -167,6 +167,8 @@ "ସର୍ବାଧିକ ଅପେକ୍ଷାରତ ସମୟ:" "ସେକେଣ୍ଡ" "ମେସେଜ୍ କପି ହୋଇଛି" + + "ଆପଣ ରୋମିଂରେ ଥିବା ସମୟରେ, ଆପଣ ଏହି ସେଟିଂସରେ ଅନ୍ତର୍ଭୁକ୍ତ ନଥିବା କିଛି ଆଲର୍ଟ ପାଇପାରନ୍ତି" "କ୍ୟାରିଅର୍ ଦ୍ୱାରା ସେଟିଂସ୍ ବଦଳାଯାଇଛି" "ୱାୟାରଲେସ୍ ଜରୁରୀକାଳୀନ ଆଲର୍ଟ ସେଟିଂସ୍ ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 404597253..492ecf6bc 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -167,6 +167,8 @@ "ਵੱਧ ਤੋਂ ਵੱਧ ਉਡੀਕ ਕਰਨ ਦਾ ਸਮਾਂ:" "ਸਕਿੰਟ" "ਸੁਨੇਹਾ ਕਾਪੀ ਕੀਤਾ ਗਿਆ" + + "ਰੋਮਿੰਗ ਵਿੱਚ ਹੋਣ \'ਤੇ, ਤੁਹਾਨੂੰ ਕੁਝ ਸੁਚੇਤਨਾਵਾਂ ਮਿਲ ਸਕਦੀਆਂ ਹਨ ਜੋ ਇਨ੍ਹਾਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਹਨ" "ਕੈਰੀਅਰ ਨੇ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲਿਆ" "ਵਾਇਰਲੈੱਸ ਸੰਕਟਕਾਲੀਨ ਸੁਚੇਤਨਾ ਸੈਟਿੰਗਾਂ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 9cd9b9ca5..626a54400 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -167,6 +167,8 @@ "Maksymalny czas oczekiwania:" "sek." "Wiadomość skopiowana" + + "Podczas korzystania z roamingu możesz otrzymywać alerty nieuwzględnione w tych ustawieniach" "Ustawienia zmienione przez operatora" "Kliknij, by zobaczyć ustawienia alertów o zagrożeniu" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 20e851ef1..8759ebafa 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -167,6 +167,8 @@ "Tempo de espera máximo:" "segundos" "Mensagem copiada." + + "Enquanto estiver a utilizar o roaming, pode obter alguns alertas que não estão incluídos nestas definições" "Definições alteradas pelo operador" "Toque para ver definições de alertas de emergência sem fios" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index eb98c50f1..f90cef3a7 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -167,6 +167,8 @@ "Tempo máximo de espera:" "segundos" "Mensagem copiada" + + "Durante o roaming, você pode receber alertas que não estão incluídos nessas configurações" "Configurações mudadas pela operadora" "Toque para ver as configurações sem fio do alerta de emergência" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index fe17d839e..3b0b210fd 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -167,6 +167,8 @@ "Timpul maxim de așteptare:" "secunde" "Mesajul a fost copiat" + + "Cât timp sunteți în roaming, puteți să primiți alerte care nu sunt incluse în aceste setări" "Setările au fost modificate de către operator" "Atingeți ca să vedeți setările pentru alertele de urgență wireless" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index cc92f280e..f047b4eb4 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -167,6 +167,8 @@ "Максимальное время ожидания:" "сек." "Сообщение скопировано" + + "В роуминге вы можете получать оповещения, которые не указаны в этих настройках." "Настройки изменены оператором связи" "Нажмите, чтобы посмотреть настройки экстренных оповещений по беспроводным сетям." diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 95ffe5e74..db1a42663 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -167,6 +167,8 @@ "උපරිම පොරොත්තු වේලාව:" "තත්පර" "පණිවිඩය පිටපත් කරන ලදී" + + "ඔබ රෝමිං අතරතුර, ඔබට මෙම සැකසීම් තුළ ඇතුළත් නොවන ඇඟවීම් කිහිපයක් ලැබිය හැකිය" "වාහකය මගින් සැකසීම් වෙනස් කරන ලදි" "රැහැන් රහිත හදිසි අවස්ථා ඇඟවීම් සැකසීම් බැලීමට තට්ටු කරන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 8b337c30a..bf25d2470 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -167,6 +167,8 @@ "Maximálny čas čakania:" "s" "Správa bola skopírovaná" + + "Pri roamingu môžete dostať niektoré upozornenia, ktoré v týchto nastaveniach nie sú zahrnuté" "Nastavenia zmenil operátor" "Klepnutím zobrazíte nastavenia bezdrôtového tiesňového upozornenia" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 48972b95e..38fbe1da4 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -167,6 +167,8 @@ "Najdaljši čas čakanja:" "sekunde" "Sporočilo je kopirano" + + "Med gostovanjem boste morda prejeli nekatera opozorila, ki niso vključena v teh nastavitvah." "Operater je spremenil nastavitve" "Dotaknite se za ogled nastavitev brezžičnih nujnih opozoril" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 99b2ee83c..07aea7361 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -167,6 +167,8 @@ "Koha maksimale e pritjes:" "sekonda" "Mesazhi u kopjua" + + "Kur je në roaming, mund të marrësh disa sinjalizime që nuk janë të përfshira në këto cilësime" "Cilësimet janë ndryshuar nga operatori celular" "Trokit për të parë cilësimet e sinjalizimeve me valë të urgjencës" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 4666ff4b1..3d6bc2ae6 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -167,6 +167,8 @@ "Максимално време чекања:" "сек" "Порука је копирана" + + "Док сте у ромингу можете да добијате нека обавештења која нису обухваћена овим подешавањима" "Мобилни оператер је променио подешавања" "Додирните да бисте видели подешавања бежичних упозорења о хитним случајевима" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 291d8eb96..3064c017f 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -167,6 +167,8 @@ "Längsta väntetid:" "sekunder" "Meddelandet har kopierats" + + "Vid roaming kan du få vissa meddelanden som inte omfattas av de här inställningarna" "Inställningarna har ändrats av operatören" "Tryck för att visa inställningar för trådlösa varningar vid nödsituationer" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 8e3e6941a..d30389135 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -167,6 +167,8 @@ "Muda wa juu zaidi wa kusubiri:" "sekunde" "Ujumbe umenakiliwa" + + "Unapotumia mitandao ya ng\'ambo, unaweza kupata arifa ambazo hazijumuishwi katika mipangilio hii" "Mipangilio imebadilishwa na mtoa huduma" "Gusa ili uangalie mipangilio ya arifa za dharura kupitia vifaa visivyotumia waya" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 51e7de575..590e72367 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -167,6 +167,8 @@ "அதிகபட்சக் காத்திருப்பு நேரம்:" "நொடிகள்" "செய்தி நகலெடுக்கப்பட்டது" + + "ரோமிங்கில் இருக்கும்போது இந்த அமைப்புகளில் சேர்க்கப்படாத சில விழிப்பூட்டல்களை நீங்கள் பெறக்கூடும்" "மொபைல் நிறுவனத்தால் மாற்றப்பட்ட அமைப்புகள்" "வயர்லெஸ் அவசரகால விழிப்பூட்டல் அமைப்புகளைப் பார்க்க தட்டவும்" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 20d8ab1fa..0a9bbed78 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -167,6 +167,8 @@ "గరిష్ఠ వెయిటింగ్ టైమ్:" "సెకన్లు" "మెసేజ్ కాపీ చేయబడింది" + + "మీరు రోమింగ్‌లో ఉన్నప్పుడు, ఈ సెట్టింగ్‌లలో చేర్చబడని కొన్ని హెచ్చరికలను మీరు పొందవచ్చు" "సెట్టింగ్‌లు క్యారియర్ ద్వారా మార్చబడ్డాయి" "వైర్‌లెస్ ఎమర్జెన్సీ అలర్ట్ సెట్టింగ్‌లను చూడటానికి ట్యాప్ చేయండి" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 3c63af1e1..d0da02f31 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -167,6 +167,8 @@ "เวลารอสูงสุด:" "วินาที" "คัดลอกข้อความแล้ว" + + "ขณะโรมมิ่ง คุณอาจได้รับการแจ้งเตือนบางรายการที่ไม่ได้รวมอยู่ในการตั้งค่าเหล่านี้" "มีการเปลี่ยนแปลงการตั้งค่าโดยผู้ให้บริการ" "แตะเพื่อดูการตั้งค่าการแจ้งเตือนฉุกเฉินแบบไร้สาย" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 2256517d7..f00aa8501 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -167,6 +167,8 @@ "Maximum na tagal ng paghihintay:" "segundo" "Nakopya ang mensahe" + + "Kapag naka-roaming ka, posibleng makatanggap ka ng ilang alertong hindi kasama sa mga setting na ito" "Binago ng carrier ang mga setting" "I-tap para makita ang mga setting ng wireless na alertong pang-emergency" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 8458237fd..a11e9c66a 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -167,6 +167,8 @@ "Maksimum bekleme süresi:" "saniye" "Mesaj kopyalandı" + + "Dolaşımdayken bu ayarlarda olmayan bazı uyarılar alabilirsiniz" "Ayarlar, operatör tarafından değiştirildi" "Kablosuz acil durum uyarısı ayarlarını görmek için dokunun" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index cd3c9443e..10fd360dc 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -167,6 +167,8 @@ "Максимальний час очікування:" "с" "Повідомлення скопійовано" + + "У роумінгу ви можете отримувати деякі сповіщення, відсутні в цих налаштуваннях" "Налаштування змінив оператор" "Натисніть, щоб переглянути налаштування бездротових екстрених сповіщень" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 8ea1b00c4..da7358c6b 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -167,6 +167,8 @@ "زیادہ سے زیادہ انتظار کرنے کا وقت:" "سیکنڈز" "پیغام کاپی ہو گیا" + + "آپ کے رومنگ کے دوران، آپ کو کچھ الرٹس موصول ہو سکتے ہیں جو ان ترتیبات میں شامل نہیں ہیں" "ترتیبات کو کیریئر نے تبدیل کر دیا" "وائرلیس ہنگامی الرٹ کی ترتیبات کو دیکھنے کیلئے تھپتھپائیں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 6bf090e6a..04cff9796 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -167,6 +167,8 @@ "Maksimal kutish vaqti:" "soniya" "Xabar nusxalandi" + + "Roamingda bu sozlamalardan tashqari ayrim bildirishnomalar kelishi mumkin" "Sozlamalar operator tomonidan oʻzgartirildi" "Favqulodda simsiz ogohlantirish sozlamalarini ochish uchun bosing" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index ab52c29dc..d00c00b8d 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -167,6 +167,8 @@ "Thời gian chờ đợi tối đa:" "giây" "Đã sao chép thông báo" + + "Trong khi chuyển vùng, bạn có thể nhận được một số cảnh báo không có trong các chế độ cài đặt này" "Các tùy chọn cài đặt do nhà mạng thay đổi" "Nhấn để xem các tùy chọn cài đặt cảnh báo khẩn cấp không dây" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 25dea63c2..c4e2ca3c4 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -167,6 +167,8 @@ "最长等待时间:" "秒" "已复制消息" + + "在漫游时,您可能会收到一些除下方设置之外的提醒。" "运营商已更改设置" "点按即可查看无线紧急警报设置" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 4df437cf5..a50adb507 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -167,6 +167,8 @@ "最長等候時間:" "秒" "已複製訊息" + + "漫遊時,您可能接收不包括在這些設定中的部分警示。" "流動網絡供應商已變更設定" "輕按以查看無線緊急警示設定" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index e3c94bfdf..c911addbb 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -167,6 +167,8 @@ "等待時間上限:" "秒" "已複製訊息" + + "漫遊時可能會收到一些不屬於這些設定的警報" "電信業者已變更設定" "輕觸即可查看無線緊急警報設定" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 4954d96f4..ccfd121cc 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -167,6 +167,8 @@ "Isikhathi sokulinda esikhulu:" "amasekhondi" "Umlayezo ukopishiwe" + + "Ngenkathi uzulazula, ungathola izexwayiso ezingafakiwe kulamasethingi" "Amasethingi ashintshwe yinkampani yenethiwekhi" "Thepha ukuze ubone amasethingi esixwayiso sokuphuthuma okungaxhunyiwe" -- cgit v1.2.3 From 3187b920fba81c4e7c3632cafac40f1ca930f2a2 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Tue, 7 Dec 2021 05:27:21 +0000 Subject: Enable channel id 0 for MCC001 configuration channel id 0 should be enabled for Test configuration(MCC001) according to 3GPP TS 51.010-1. Bug: 205524172 Bug: 208927205 Test: Manual Change-Id: I1efb72d4e9df0cbd5608c78d8a48204afe01ce43 --- res/values-mcc001/config.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/res/values-mcc001/config.xml b/res/values-mcc001/config.xml index a057eabe6..1bdd0fe68 100644 --- a/res/values-mcc001/config.xml +++ b/res/values-mcc001/config.xml @@ -97,6 +97,8 @@ false + + 0x00:rat=gsm, emergency=true 0x32:type=area, emergency=false 0x3C:type=area, emergency=false -- cgit v1.2.3 From 95fd52b0941c77b13c53ea57503ca854e3d04d5a Mon Sep 17 00:00:00 2001 From: youngtaecha Date: Wed, 1 Dec 2021 13:38:30 +0000 Subject: Disable testing_mode on below conditions. - userbuildmode is true and - allow_testing_mode_on_user_build is false and - testing_mode is true Bug: 205920270 Test: Manual Test: atest CellBroadcastReceiverOemUnitTests Change-Id: Ib4354a69cbdb6912bc5eee866efafba8d9861690 --- .../cellbroadcastreceiver/CellBroadcastReceiver.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index e4a114b1f..14ebe3b0c 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -275,7 +275,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { * @param context the context * @param subId subId of the carrier config event */ - private void resetSettingsIfCarrierChanged(Context context, int subId) { + private void resetSettingsAsNeeded(Context context, int subId) { // subId may be -1 if carrier config broadcast is being sent on SIM removal if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (getPreviousCarrierIdForDefaultSub() == NO_PREVIOUS_CARRIER_ID) { @@ -318,6 +318,17 @@ public class CellBroadcastReceiver extends BroadcastReceiver { return; } + /** When user_build_mode is true and alow_testing_mode_on_user_build is false + * then testing_mode is not able to be true at all. + */ + Resources res = getResourcesMethod(); + if (!res.getBoolean(R.bool.allow_testing_mode_on_user_build) + && SystemProperties.getInt("ro.debuggable", 0) == 0 + && CellBroadcastReceiver.isTestingMode(context)) { + Log.d(TAG, "it can't be testing_mode at all"); + setTestingMode(false); + } + if (carrierId != previousCarrierId) { saveCarrierIdForDefaultSub(carrierId); startConfigService(context, @@ -445,7 +456,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { if (isSystemUser()) { Log.d(TAG, "initializeSharedPreference"); - resetSettingsIfCarrierChanged(context, subId); + resetSettingsAsNeeded(context, subId); SharedPreferences sp = getDefaultSharedPreferences(); -- cgit v1.2.3 From cf973927ffd0689f6eac08877d9522c1fe33af4d Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Thu, 9 Dec 2021 04:41:21 +0000 Subject: Remove language filter at primary channels for Turkey filter_language=true should be applied only to secondary channels. Bug: 209550466 Test: Manual Change-Id: I939d21dda88f4836365f431e33a2010b9d9fd1b5 --- res/values-mcc286/config.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-mcc286/config.xml b/res/values-mcc286/config.xml index 67a210a26..a398d2192 100644 --- a/res/values-mcc286/config.xml +++ b/res/values-mcc286/config.xml @@ -17,25 +17,25 @@ - 0x1112:rat=gsm, emergency=true, override_dnd=true, always_on=true, filter_language=true + 0x1112:rat=gsm, emergency=true, override_dnd=true, always_on=true 0x111F:rat=gsm, emergency=true, override_dnd=true, always_on=true, filter_language=true - 0x1113-0x111A:rat=gsm, emergency=true, filter_language=true + 0x1113-0x111A:rat=gsm, emergency=true 0x1120-0x1127:rat=gsm, emergency=true, filter_language=true - 0x111B:rat=gsm, emergency=true, filter_language=true + 0x111B:rat=gsm, emergency=true 0x1128:rat=gsm, emergency=true, filter_language=true - 0x111C-0x111E:rat=gsm, emergency=true, filter_language=true + 0x111C-0x111E:rat=gsm, emergency=true 0x1129-0x112B:rat=gsm, emergency=true, filter_language=true -- cgit v1.2.3 From 23fa0f05372cdc5dbc20d364455213d99e1312be Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Wed, 8 Dec 2021 19:27:35 +0000 Subject: Support cell broadcast config for DE-Alert Bug: 199047400 Test: manual Change-Id: I48213b5a454254febf858031353e65b6f2e50d93 --- res/values-mcc262-mnc01/config.xml | 20 ---------- res/values-mcc262-mnc06/config.xml | 20 ---------- res/values-mcc262/config.xml | 80 ++++++++++++++++++++++++++++++++++++++ res/values/config.xml | 2 + 4 files changed, 82 insertions(+), 40 deletions(-) delete mode 100644 res/values-mcc262-mnc01/config.xml delete mode 100644 res/values-mcc262-mnc06/config.xml create mode 100644 res/values-mcc262/config.xml diff --git a/res/values-mcc262-mnc01/config.xml b/res/values-mcc262-mnc01/config.xml deleted file mode 100644 index 7d3520880..000000000 --- a/res/values-mcc262-mnc01/config.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - false - diff --git a/res/values-mcc262-mnc06/config.xml b/res/values-mcc262-mnc06/config.xml deleted file mode 100644 index 7d3520880..000000000 --- a/res/values-mcc262-mnc06/config.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - false - diff --git a/res/values-mcc262/config.xml b/res/values-mcc262/config.xml new file mode 100644 index 000000000..7be65eaa1 --- /dev/null +++ b/res/values-mcc262/config.xml @@ -0,0 +1,80 @@ + + + + + + 0x1112:rat=gsm, emergency=true, always_on=true + + 0x111F:rat=gsm, emergency=true, always_on=true + + + + 0x1113:rat=gsm, emergency=true + + 0x1120:rat=gsm, emergency=true + + + + 0x1115:rat=gsm, emergency=true + + 0x1122:rat=gsm, emergency=true + + + + 0x112C:rat=gsm, emergency=true + + 0x112D:rat=gsm, emergency=true + + + + + 0x112E:rat=gsm, emergency=true + + 0x112F:rat=gsm, emergency=true + + + + 0x111E:rat=gsm, emergency=true + + 0x112B:rat=gsm, emergency=true + + + + 0x111D:rat=gsm, emergency=true + + 0x112A:rat=gsm, emergency=true + + + + 0x111C:rat=gsm, emergency=true + + 0x1129:rat=gsm, emergency=true + + + + false + + true + + false + + true + + true + + + + diff --git a/res/values/config.xml b/res/values/config.xml index 9e65a6f87..2f8dff3ff 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -190,6 +190,8 @@ 208 427 + + 262 MMM dd, HH:mm a + + + + 0x1112:rat=gsm, emergency=true, always_on=true + + 0x111F:rat=gsm, emergency=true, filter_language=true, always_on=true + + @@ -27,10 +35,19 @@ 0x1117:rat=gsm, emergency=true 0x111B:rat=gsm, emergency=true - 0x1120:rat=gsm, emergency=true - 0x1124:rat=gsm, emergency=true - 0x1128:rat=gsm, emergency=true + 0x1120:rat=gsm, emergency=true, filter_language=true + 0x1124:rat=gsm, emergency=true, filter_language=true + 0x1128:rat=gsm, emergency=true, filter_language=true + + + + 0x111D:rat=gsm, emergency=true + + 0x112A:rat=gsm, emergency=true, filter_language=true + + + -- cgit v1.2.3 From 9354fd8d9b55ff56e63248f28c6fb5ea36e9445f Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Wed, 29 Dec 2021 18:16:54 +0000 Subject: Add geo_fencing_trigger_messages_range_strings to range resource keys The values of sCellBroadcastRangeResourceKeys should include all keys defined in config. Bug: 212484093 Test: manually check whether the channel is enabled Change-Id: I972f4e84b4cb60844791be834c09ddc55f050c2c --- src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java b/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java index 22ececaad..973fab896 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastChannelManager.java @@ -76,7 +76,8 @@ public class CellBroadcastChannelManager { R.array.etws_alerts_range_strings, R.array.etws_test_alerts_range_strings, R.array.public_safety_messages_channels_range_strings, - R.array.state_local_test_alert_range_strings + R.array.state_local_test_alert_range_strings, + R.array.geo_fencing_trigger_messages_range_strings )); private static Map>> -- cgit v1.2.3 From 2b3753e3a8d32c8ff3a83307db1cb99446805111 Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Tue, 4 Jan 2022 01:01:38 +0000 Subject: Set strings of secondary language setting for Puerto Rico secondary language setting should be enabled with both config and strings. Bug: 213014647 Test: Manual Change-Id: I5833ffe80ccc57805f7ebfacdb40230e58c9fb27 --- res/values-mcc330/strings.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 res/values-mcc330/strings.xml diff --git a/res/values-mcc330/strings.xml b/res/values-mcc330/strings.xml new file mode 100644 index 000000000..e6d2bdaaf --- /dev/null +++ b/res/values-mcc330/strings.xml @@ -0,0 +1,25 @@ + + + + + + + + Spanish + + Receive emergency alerts in Spanish when possible + -- cgit v1.2.3 From de9ee46b1f12c4b48432429c872036add6d1e0df Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 4 Jan 2022 16:19:35 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I9d99fa6815d2f75fe32262d45b8c972d74599f7d --- res/values-es-rUS/strings.xml | 2 +- res/values-ko/strings.xml | 8 ++++---- res/values-mcc234-it/strings.xml | 2 +- res/values-mcc234-ko/strings.xml | 2 +- res/values-mcc424-it/strings.xml | 2 +- res/values-mcc424-ko/strings.xml | 2 +- res/values-mcc427-ko/strings.xml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 24fc41b09..d8b6b2196 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -135,7 +135,7 @@ "%s alertas no leídas" "Alertas nuevas" "Mostrar diálogo para inhabilitar después de la primera alerta (salvo Alerta Presidencial)" - "Mostrar cuadro de desactivación" + "Mostrar diálogo para inhabilitar" "Actualmente, recibes alertas de emergencia inalámbricas. ¿Quieres seguir recibiéndolas?" "Sí" "No" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index a706aade9..363d7d97c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "긴급 재난 문자" "긴급 재난 문자" - "무선 긴급 알림" + "긴급 재난 문자" "위급 재난 문자" "긴급 재난 문자" "안전 안내 문자" @@ -62,7 +62,7 @@ "SIM을 기반으로 자동 WEA 설정을 변경했습니다." "경보 허용" "재난문자 알림 수신" - "다시 알림 간격" + "경보 다시 알림" "경보 메시지를 음성으로 알림" "재난문자를 TTS(텍스트 음성 변환) 기능을 사용하여 음성으로 알림" "경보 알림음이 보통 볼륨으로 재생됨" @@ -86,7 +86,7 @@ "주 및 지방 당국으로부터 테스트 메시지 수신" "긴급 재난 문자" "치명적인 사건 경고" - "테스트 알림" + "테스트 경보" "이동통신사 테스트 및 안전 경보 시스템의 월간 테스트 받기" @@ -147,7 +147,7 @@ "15분마다" "없음" - "무선 긴급 알림" + "긴급 재난 문자" "대통령령 비상 메시지" "대통령이 발령한 대국민 비상 메시지입니다. 이 알림은 끌 수 없습니다" diff --git a/res/values-mcc234-it/strings.xml b/res/values-mcc234-it/strings.xml index 2ca84109c..4695c9091 100644 --- a/res/values-mcc234-it/strings.xml +++ b/res/values-mcc234-it/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Allerte per condizioni estreme" "Allerte per condizioni gravi" - "Avvisi di prova" + "Allerte di prova" "Simulazioni di avvisi" "Allerta governativa" "Allerta per condizioni estreme" diff --git a/res/values-mcc234-ko/strings.xml b/res/values-mcc234-ko/strings.xml index ff7d8b854..b4861bd21 100644 --- a/res/values-mcc234-ko/strings.xml +++ b/res/values-mcc234-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "안전 안내 문자" "위험 알림 문자" - "테스트 알림 문자" + "테스트 경보" "훈련 알림 문자" "정부 기관 알림 문자" "안전 안내 문자" diff --git a/res/values-mcc424-it/strings.xml b/res/values-mcc424-it/strings.xml index cc2ef53b7..817cff081 100644 --- a/res/values-mcc424-it/strings.xml +++ b/res/values-mcc424-it/strings.xml @@ -28,5 +28,5 @@ "Allerta di prova" "Avvisi di allerta" "Allerte sicurezza pubblica" - "Avvisi di prova" + "Allerte di prova" diff --git a/res/values-mcc424-ko/strings.xml b/res/values-mcc424-ko/strings.xml index e4c580337..f38491f5b 100644 --- a/res/values-mcc424-ko/strings.xml +++ b/res/values-mcc424-ko/strings.xml @@ -28,5 +28,5 @@ "테스트 알림" "경고 알림" "공공 안전 알림" - "테스트 알림" + "테스트 경보" diff --git a/res/values-mcc427-ko/strings.xml b/res/values-mcc427-ko/strings.xml index 4139ac2fd..ab76587ce 100644 --- a/res/values-mcc427-ko/strings.xml +++ b/res/values-mcc427-ko/strings.xml @@ -30,5 +30,5 @@ "테스트 알림" "경고 알림" "안전 안내 알림" - "테스트 알림" + "테스트 경보" -- cgit v1.2.3 From 6d0252908206c32a99f97f487a3ebf9adc39a1f6 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 4 Jan 2022 16:59:54 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Id00134fdb79445f79ec52b5cb8a8617b8993132c --- res/values-es-rUS/strings.xml | 2 +- res/values-ko/strings.xml | 8 ++++---- res/values-mcc234-it/strings.xml | 2 +- res/values-mcc234-ko/strings.xml | 2 +- res/values-mcc424-it/strings.xml | 2 +- res/values-mcc424-ko/strings.xml | 2 +- res/values-mcc427-ko/strings.xml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 24fc41b09..d8b6b2196 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -135,7 +135,7 @@ "%s alertas no leídas" "Alertas nuevas" "Mostrar diálogo para inhabilitar después de la primera alerta (salvo Alerta Presidencial)" - "Mostrar cuadro de desactivación" + "Mostrar diálogo para inhabilitar" "Actualmente, recibes alertas de emergencia inalámbricas. ¿Quieres seguir recibiéndolas?" "Sí" "No" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index a706aade9..363d7d97c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "긴급 재난 문자" "긴급 재난 문자" - "무선 긴급 알림" + "긴급 재난 문자" "위급 재난 문자" "긴급 재난 문자" "안전 안내 문자" @@ -62,7 +62,7 @@ "SIM을 기반으로 자동 WEA 설정을 변경했습니다." "경보 허용" "재난문자 알림 수신" - "다시 알림 간격" + "경보 다시 알림" "경보 메시지를 음성으로 알림" "재난문자를 TTS(텍스트 음성 변환) 기능을 사용하여 음성으로 알림" "경보 알림음이 보통 볼륨으로 재생됨" @@ -86,7 +86,7 @@ "주 및 지방 당국으로부터 테스트 메시지 수신" "긴급 재난 문자" "치명적인 사건 경고" - "테스트 알림" + "테스트 경보" "이동통신사 테스트 및 안전 경보 시스템의 월간 테스트 받기" @@ -147,7 +147,7 @@ "15분마다" "없음" - "무선 긴급 알림" + "긴급 재난 문자" "대통령령 비상 메시지" "대통령이 발령한 대국민 비상 메시지입니다. 이 알림은 끌 수 없습니다" diff --git a/res/values-mcc234-it/strings.xml b/res/values-mcc234-it/strings.xml index 2ca84109c..4695c9091 100644 --- a/res/values-mcc234-it/strings.xml +++ b/res/values-mcc234-it/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Allerte per condizioni estreme" "Allerte per condizioni gravi" - "Avvisi di prova" + "Allerte di prova" "Simulazioni di avvisi" "Allerta governativa" "Allerta per condizioni estreme" diff --git a/res/values-mcc234-ko/strings.xml b/res/values-mcc234-ko/strings.xml index ff7d8b854..b4861bd21 100644 --- a/res/values-mcc234-ko/strings.xml +++ b/res/values-mcc234-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "안전 안내 문자" "위험 알림 문자" - "테스트 알림 문자" + "테스트 경보" "훈련 알림 문자" "정부 기관 알림 문자" "안전 안내 문자" diff --git a/res/values-mcc424-it/strings.xml b/res/values-mcc424-it/strings.xml index cc2ef53b7..817cff081 100644 --- a/res/values-mcc424-it/strings.xml +++ b/res/values-mcc424-it/strings.xml @@ -28,5 +28,5 @@ "Allerta di prova" "Avvisi di allerta" "Allerte sicurezza pubblica" - "Avvisi di prova" + "Allerte di prova" diff --git a/res/values-mcc424-ko/strings.xml b/res/values-mcc424-ko/strings.xml index e4c580337..f38491f5b 100644 --- a/res/values-mcc424-ko/strings.xml +++ b/res/values-mcc424-ko/strings.xml @@ -28,5 +28,5 @@ "테스트 알림" "경고 알림" "공공 안전 알림" - "테스트 알림" + "테스트 경보" diff --git a/res/values-mcc427-ko/strings.xml b/res/values-mcc427-ko/strings.xml index 4139ac2fd..ab76587ce 100644 --- a/res/values-mcc427-ko/strings.xml +++ b/res/values-mcc427-ko/strings.xml @@ -30,5 +30,5 @@ "테스트 알림" "경고 알림" "안전 안내 알림" - "테스트 알림" + "테스트 경보" -- cgit v1.2.3 From caa238bae60dced98f142164aa6d589f57ce2399 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 5 Jan 2022 03:27:45 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ibdbed5a91d6c7dd6539aaa42c833649a0fe6bbae --- res/values-mcc330-af/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-am/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ar/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-as/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-az/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-b+sr+Latn/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-be/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-bg/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-bn/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-bs/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ca/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-cs/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-da/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-de/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-el/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-en-rAU/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-en-rCA/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-en-rGB/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-en-rIN/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-en-rXC/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-es-rUS/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-es/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-et/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-eu/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-fa/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-fi/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-fr-rCA/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-fr/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-gl/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-gu/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-hi/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-hr/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-hu/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-hy/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-in/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-is/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-it/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-iw/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ja/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ka/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-kk/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-km/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-kn/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ko/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ky/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-lo/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-lt/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-lv/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-mk/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ml/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-mn/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-mr/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ms/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-my/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-nb/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ne/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-nl/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-or/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-pa/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-pl/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-pt-rPT/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-pt/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ro/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ru/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-si/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sk/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sl/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sq/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sr/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sv/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-sw/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ta/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-te/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-th/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-tl/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-tr/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-uk/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-ur/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-uz/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-vi/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-zh-rCN/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-zh-rHK/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-zh-rTW/strings.xml | 21 +++++++++++++++++++++ res/values-mcc330-zu/strings.xml | 21 +++++++++++++++++++++ 84 files changed, 1764 insertions(+) create mode 100644 res/values-mcc330-af/strings.xml create mode 100644 res/values-mcc330-am/strings.xml create mode 100644 res/values-mcc330-ar/strings.xml create mode 100644 res/values-mcc330-as/strings.xml create mode 100644 res/values-mcc330-az/strings.xml create mode 100644 res/values-mcc330-b+sr+Latn/strings.xml create mode 100644 res/values-mcc330-be/strings.xml create mode 100644 res/values-mcc330-bg/strings.xml create mode 100644 res/values-mcc330-bn/strings.xml create mode 100644 res/values-mcc330-bs/strings.xml create mode 100644 res/values-mcc330-ca/strings.xml create mode 100644 res/values-mcc330-cs/strings.xml create mode 100644 res/values-mcc330-da/strings.xml create mode 100644 res/values-mcc330-de/strings.xml create mode 100644 res/values-mcc330-el/strings.xml create mode 100644 res/values-mcc330-en-rAU/strings.xml create mode 100644 res/values-mcc330-en-rCA/strings.xml create mode 100644 res/values-mcc330-en-rGB/strings.xml create mode 100644 res/values-mcc330-en-rIN/strings.xml create mode 100644 res/values-mcc330-en-rXC/strings.xml create mode 100644 res/values-mcc330-es-rUS/strings.xml create mode 100644 res/values-mcc330-es/strings.xml create mode 100644 res/values-mcc330-et/strings.xml create mode 100644 res/values-mcc330-eu/strings.xml create mode 100644 res/values-mcc330-fa/strings.xml create mode 100644 res/values-mcc330-fi/strings.xml create mode 100644 res/values-mcc330-fr-rCA/strings.xml create mode 100644 res/values-mcc330-fr/strings.xml create mode 100644 res/values-mcc330-gl/strings.xml create mode 100644 res/values-mcc330-gu/strings.xml create mode 100644 res/values-mcc330-hi/strings.xml create mode 100644 res/values-mcc330-hr/strings.xml create mode 100644 res/values-mcc330-hu/strings.xml create mode 100644 res/values-mcc330-hy/strings.xml create mode 100644 res/values-mcc330-in/strings.xml create mode 100644 res/values-mcc330-is/strings.xml create mode 100644 res/values-mcc330-it/strings.xml create mode 100644 res/values-mcc330-iw/strings.xml create mode 100644 res/values-mcc330-ja/strings.xml create mode 100644 res/values-mcc330-ka/strings.xml create mode 100644 res/values-mcc330-kk/strings.xml create mode 100644 res/values-mcc330-km/strings.xml create mode 100644 res/values-mcc330-kn/strings.xml create mode 100644 res/values-mcc330-ko/strings.xml create mode 100644 res/values-mcc330-ky/strings.xml create mode 100644 res/values-mcc330-lo/strings.xml create mode 100644 res/values-mcc330-lt/strings.xml create mode 100644 res/values-mcc330-lv/strings.xml create mode 100644 res/values-mcc330-mk/strings.xml create mode 100644 res/values-mcc330-ml/strings.xml create mode 100644 res/values-mcc330-mn/strings.xml create mode 100644 res/values-mcc330-mr/strings.xml create mode 100644 res/values-mcc330-ms/strings.xml create mode 100644 res/values-mcc330-my/strings.xml create mode 100644 res/values-mcc330-nb/strings.xml create mode 100644 res/values-mcc330-ne/strings.xml create mode 100644 res/values-mcc330-nl/strings.xml create mode 100644 res/values-mcc330-or/strings.xml create mode 100644 res/values-mcc330-pa/strings.xml create mode 100644 res/values-mcc330-pl/strings.xml create mode 100644 res/values-mcc330-pt-rPT/strings.xml create mode 100644 res/values-mcc330-pt/strings.xml create mode 100644 res/values-mcc330-ro/strings.xml create mode 100644 res/values-mcc330-ru/strings.xml create mode 100644 res/values-mcc330-si/strings.xml create mode 100644 res/values-mcc330-sk/strings.xml create mode 100644 res/values-mcc330-sl/strings.xml create mode 100644 res/values-mcc330-sq/strings.xml create mode 100644 res/values-mcc330-sr/strings.xml create mode 100644 res/values-mcc330-sv/strings.xml create mode 100644 res/values-mcc330-sw/strings.xml create mode 100644 res/values-mcc330-ta/strings.xml create mode 100644 res/values-mcc330-te/strings.xml create mode 100644 res/values-mcc330-th/strings.xml create mode 100644 res/values-mcc330-tl/strings.xml create mode 100644 res/values-mcc330-tr/strings.xml create mode 100644 res/values-mcc330-uk/strings.xml create mode 100644 res/values-mcc330-ur/strings.xml create mode 100644 res/values-mcc330-uz/strings.xml create mode 100644 res/values-mcc330-vi/strings.xml create mode 100644 res/values-mcc330-zh-rCN/strings.xml create mode 100644 res/values-mcc330-zh-rHK/strings.xml create mode 100644 res/values-mcc330-zh-rTW/strings.xml create mode 100644 res/values-mcc330-zu/strings.xml diff --git a/res/values-mcc330-af/strings.xml b/res/values-mcc330-af/strings.xml new file mode 100644 index 000000000..fdb0a4448 --- /dev/null +++ b/res/values-mcc330-af/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spaans" + "Ontvang wanneer moontlik noodwaarskuwings in Spaans" + diff --git a/res/values-mcc330-am/strings.xml b/res/values-mcc330-am/strings.xml new file mode 100644 index 000000000..cf168ee6f --- /dev/null +++ b/res/values-mcc330-am/strings.xml @@ -0,0 +1,21 @@ + + + + + "ስፓኒሽ" + "ሲቻል የድንገተኛ አደጋ ማንቂያዎች በስፓኒሽ ይቀበሉ" + diff --git a/res/values-mcc330-ar/strings.xml b/res/values-mcc330-ar/strings.xml new file mode 100644 index 000000000..103849a68 --- /dev/null +++ b/res/values-mcc330-ar/strings.xml @@ -0,0 +1,21 @@ + + + + + "الإسبانية" + "تلقّي تنبيهات الطوارئ باللغة الإسبانية عند توفّر ذلك" + diff --git a/res/values-mcc330-as/strings.xml b/res/values-mcc330-as/strings.xml new file mode 100644 index 000000000..0191684f8 --- /dev/null +++ b/res/values-mcc330-as/strings.xml @@ -0,0 +1,21 @@ + + + + + "স্পেনিশ্ব" + "যেতিয়া সম্ভৱ জৰুৰীকালীন সতৰ্কবাৰ্তাসমূহ স্পেনিশ্বত লাভ কৰক" + diff --git a/res/values-mcc330-az/strings.xml b/res/values-mcc330-az/strings.xml new file mode 100644 index 000000000..a949fec68 --- /dev/null +++ b/res/values-mcc330-az/strings.xml @@ -0,0 +1,21 @@ + + + + + "İspan dili" + "Mümkün olduqda fövqəladə hal ilə bağlı xəbərdarlıqları İspan dilində qəbul edin" + diff --git a/res/values-mcc330-b+sr+Latn/strings.xml b/res/values-mcc330-b+sr+Latn/strings.xml new file mode 100644 index 000000000..8faab41d7 --- /dev/null +++ b/res/values-mcc330-b+sr+Latn/strings.xml @@ -0,0 +1,21 @@ + + + + + "španski" + "Primajte obaveštenja o hitnim slučajevima na španskom kada je to moguće" + diff --git a/res/values-mcc330-be/strings.xml b/res/values-mcc330-be/strings.xml new file mode 100644 index 000000000..ad5c910e8 --- /dev/null +++ b/res/values-mcc330-be/strings.xml @@ -0,0 +1,21 @@ + + + + + "Іспанская мова" + "Атрымліваць абвесткі пра надзвычайныя сітуацыі на іспанскай мове, калі магчыма" + diff --git a/res/values-mcc330-bg/strings.xml b/res/values-mcc330-bg/strings.xml new file mode 100644 index 000000000..da6346892 --- /dev/null +++ b/res/values-mcc330-bg/strings.xml @@ -0,0 +1,21 @@ + + + + + "испански" + "Получаване на сигнали при спешни случаи на испански, когато е възможно" + diff --git a/res/values-mcc330-bn/strings.xml b/res/values-mcc330-bn/strings.xml new file mode 100644 index 000000000..36cc10613 --- /dev/null +++ b/res/values-mcc330-bn/strings.xml @@ -0,0 +1,21 @@ + + + + + "স্প্যানিশ" + "যখনই সম্ভব স্প্যানিশে জরুরি সতর্কতা সংক্রান্ত মেসেজ পান" + diff --git a/res/values-mcc330-bs/strings.xml b/res/values-mcc330-bs/strings.xml new file mode 100644 index 000000000..91b5595e9 --- /dev/null +++ b/res/values-mcc330-bs/strings.xml @@ -0,0 +1,21 @@ + + + + + "španski" + "Primajte hitna upozorenja na španskom jeziku kada je moguće" + diff --git a/res/values-mcc330-ca/strings.xml b/res/values-mcc330-ca/strings.xml new file mode 100644 index 000000000..e89f15e27 --- /dev/null +++ b/res/values-mcc330-ca/strings.xml @@ -0,0 +1,21 @@ + + + + + "Espanyol" + "Vull rebre les alertes d\'emergència en espanyol sempre que sigui possible" + diff --git a/res/values-mcc330-cs/strings.xml b/res/values-mcc330-cs/strings.xml new file mode 100644 index 000000000..b320324fd --- /dev/null +++ b/res/values-mcc330-cs/strings.xml @@ -0,0 +1,21 @@ + + + + + "Španělština" + "Dostávat výstražné zprávy ve španělštině, pokud to bude možné" + diff --git a/res/values-mcc330-da/strings.xml b/res/values-mcc330-da/strings.xml new file mode 100644 index 000000000..844124df0 --- /dev/null +++ b/res/values-mcc330-da/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spansk" + "Få underretninger om nødsituationer på spansk, når det er muligt" + diff --git a/res/values-mcc330-de/strings.xml b/res/values-mcc330-de/strings.xml new file mode 100644 index 000000000..00b8c1fed --- /dev/null +++ b/res/values-mcc330-de/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanisch" + "Notfallbenachrichtigungen wenn möglich auf Spanisch erhalten" + diff --git a/res/values-mcc330-el/strings.xml b/res/values-mcc330-el/strings.xml new file mode 100644 index 000000000..468a2241c --- /dev/null +++ b/res/values-mcc330-el/strings.xml @@ -0,0 +1,21 @@ + + + + + "Ισπανικά" + "Λάβετε ειδοποιήσεις έκτακτης ανάγκης στα Ισπανικά, όταν υπάρχει αυτή η δυνατότητα." + diff --git a/res/values-mcc330-en-rAU/strings.xml b/res/values-mcc330-en-rAU/strings.xml new file mode 100644 index 000000000..0ddb2f478 --- /dev/null +++ b/res/values-mcc330-en-rAU/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanish" + "Receive emergency alerts in Spanish when possible" + diff --git a/res/values-mcc330-en-rCA/strings.xml b/res/values-mcc330-en-rCA/strings.xml new file mode 100644 index 000000000..0ddb2f478 --- /dev/null +++ b/res/values-mcc330-en-rCA/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanish" + "Receive emergency alerts in Spanish when possible" + diff --git a/res/values-mcc330-en-rGB/strings.xml b/res/values-mcc330-en-rGB/strings.xml new file mode 100644 index 000000000..0ddb2f478 --- /dev/null +++ b/res/values-mcc330-en-rGB/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanish" + "Receive emergency alerts in Spanish when possible" + diff --git a/res/values-mcc330-en-rIN/strings.xml b/res/values-mcc330-en-rIN/strings.xml new file mode 100644 index 000000000..0ddb2f478 --- /dev/null +++ b/res/values-mcc330-en-rIN/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanish" + "Receive emergency alerts in Spanish when possible" + diff --git a/res/values-mcc330-en-rXC/strings.xml b/res/values-mcc330-en-rXC/strings.xml new file mode 100644 index 000000000..67d8f1312 --- /dev/null +++ b/res/values-mcc330-en-rXC/strings.xml @@ -0,0 +1,21 @@ + + + + + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎Spanish‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎Receive emergency alerts in Spanish when possible‎‏‎‎‏‎" + diff --git a/res/values-mcc330-es-rUS/strings.xml b/res/values-mcc330-es-rUS/strings.xml new file mode 100644 index 000000000..1bfe5313f --- /dev/null +++ b/res/values-mcc330-es-rUS/strings.xml @@ -0,0 +1,21 @@ + + + + + "Español" + "Recibir alertas de emergencias en español siempre que sea posible" + diff --git a/res/values-mcc330-es/strings.xml b/res/values-mcc330-es/strings.xml new file mode 100644 index 000000000..558e13b6f --- /dev/null +++ b/res/values-mcc330-es/strings.xml @@ -0,0 +1,21 @@ + + + + + "Español" + "Recibir alertas de emergencia en español cuando sea posible" + diff --git a/res/values-mcc330-et/strings.xml b/res/values-mcc330-et/strings.xml new file mode 100644 index 000000000..7ad244597 --- /dev/null +++ b/res/values-mcc330-et/strings.xml @@ -0,0 +1,21 @@ + + + + + "hispaania" + "Võimaluse korral saadetakse hispaaniakeelseid hädaolukorra teatisi" + diff --git a/res/values-mcc330-eu/strings.xml b/res/values-mcc330-eu/strings.xml new file mode 100644 index 000000000..ac3d238c5 --- /dev/null +++ b/res/values-mcc330-eu/strings.xml @@ -0,0 +1,21 @@ + + + + + "Gaztelania" + "Jaso larrialdi-alertak gaztelaniaz, ahal denean" + diff --git a/res/values-mcc330-fa/strings.xml b/res/values-mcc330-fa/strings.xml new file mode 100644 index 000000000..286193e6c --- /dev/null +++ b/res/values-mcc330-fa/strings.xml @@ -0,0 +1,21 @@ + + + + + "اسپانیایی" + "دریافت هشدارهای اضطراری به زبان اسپانیایی (درصورت امکان)" + diff --git a/res/values-mcc330-fi/strings.xml b/res/values-mcc330-fi/strings.xml new file mode 100644 index 000000000..22e0ef3d1 --- /dev/null +++ b/res/values-mcc330-fi/strings.xml @@ -0,0 +1,21 @@ + + + + + "espanja" + "Vastaanota hätähälytyksiä espanjaksi, kun mahdollista" + diff --git a/res/values-mcc330-fr-rCA/strings.xml b/res/values-mcc330-fr-rCA/strings.xml new file mode 100644 index 000000000..9304cb156 --- /dev/null +++ b/res/values-mcc330-fr-rCA/strings.xml @@ -0,0 +1,21 @@ + + + + + "Espagnol" + "Recevoir des alertes d\'urgence en espagnol lorsque c\'est possible" + diff --git a/res/values-mcc330-fr/strings.xml b/res/values-mcc330-fr/strings.xml new file mode 100644 index 000000000..eb48efb90 --- /dev/null +++ b/res/values-mcc330-fr/strings.xml @@ -0,0 +1,21 @@ + + + + + "Espagnol" + "Recevoir les alertes d\'urgence en espagnol quand cela est possible" + diff --git a/res/values-mcc330-gl/strings.xml b/res/values-mcc330-gl/strings.xml new file mode 100644 index 000000000..5acbdaa58 --- /dev/null +++ b/res/values-mcc330-gl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Español" + "Recibe alertas por emerxencias en español cando sexa posible" + diff --git a/res/values-mcc330-gu/strings.xml b/res/values-mcc330-gu/strings.xml new file mode 100644 index 000000000..72e0199a0 --- /dev/null +++ b/res/values-mcc330-gu/strings.xml @@ -0,0 +1,21 @@ + + + + + "સ્પેનિશ" + "શક્ય હોય ત્યારે ઇમર્જન્સીના અલર્ટ સ્પેનિશમાં મેળવો" + diff --git a/res/values-mcc330-hi/strings.xml b/res/values-mcc330-hi/strings.xml new file mode 100644 index 000000000..91cad08aa --- /dev/null +++ b/res/values-mcc330-hi/strings.xml @@ -0,0 +1,21 @@ + + + + + "स्पैनिश" + "जब भी हो सके, आपातकालीन चेतावनियों की सूचनाएं स्पैनिश में पाएं" + diff --git a/res/values-mcc330-hr/strings.xml b/res/values-mcc330-hr/strings.xml new file mode 100644 index 000000000..95116734a --- /dev/null +++ b/res/values-mcc330-hr/strings.xml @@ -0,0 +1,21 @@ + + + + + "španjolski" + "Primajte hitna upozorenja na španjolskom kad je moguće" + diff --git a/res/values-mcc330-hu/strings.xml b/res/values-mcc330-hu/strings.xml new file mode 100644 index 000000000..2548bc2d6 --- /dev/null +++ b/res/values-mcc330-hu/strings.xml @@ -0,0 +1,21 @@ + + + + + "spanyol" + "Vészjelzések fogadása spanyol nyelven, amikor csak lehetséges" + diff --git a/res/values-mcc330-hy/strings.xml b/res/values-mcc330-hy/strings.xml new file mode 100644 index 000000000..6fecd45d7 --- /dev/null +++ b/res/values-mcc330-hy/strings.xml @@ -0,0 +1,21 @@ + + + + + "Իսպաներեն" + "Հնարավորության դեպքում արտակարգ իրավիճակների մասին ծանուցումները ստանալ իսպաներեն լեզվով" + diff --git a/res/values-mcc330-in/strings.xml b/res/values-mcc330-in/strings.xml new file mode 100644 index 000000000..2d9e3a04e --- /dev/null +++ b/res/values-mcc330-in/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanyol" + "Dapatkan peringatan darurat dalam bahasa Spanyol jika memungkinkan" + diff --git a/res/values-mcc330-is/strings.xml b/res/values-mcc330-is/strings.xml new file mode 100644 index 000000000..53b104abe --- /dev/null +++ b/res/values-mcc330-is/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spænska" + "Fá neyðartilkynningar á spænsku þegar það er hægt" + diff --git a/res/values-mcc330-it/strings.xml b/res/values-mcc330-it/strings.xml new file mode 100644 index 000000000..26466f881 --- /dev/null +++ b/res/values-mcc330-it/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spagnolo" + "Ricevi avvisi di emergenza in spagnolo quando è possibile" + diff --git a/res/values-mcc330-iw/strings.xml b/res/values-mcc330-iw/strings.xml new file mode 100644 index 000000000..37dc36242 --- /dev/null +++ b/res/values-mcc330-iw/strings.xml @@ -0,0 +1,21 @@ + + + + + "ספרדית" + "קבלת התרעות על מקרי חירום בספרדית כשזה אפשרי" + diff --git a/res/values-mcc330-ja/strings.xml b/res/values-mcc330-ja/strings.xml new file mode 100644 index 000000000..ddd8dee79 --- /dev/null +++ b/res/values-mcc330-ja/strings.xml @@ -0,0 +1,21 @@ + + + + + "スペイン語" + "可能な場合はスペイン語で緊急アラートを受信する" + diff --git a/res/values-mcc330-ka/strings.xml b/res/values-mcc330-ka/strings.xml new file mode 100644 index 000000000..6ea2a2448 --- /dev/null +++ b/res/values-mcc330-ka/strings.xml @@ -0,0 +1,21 @@ + + + + + "ესპანური" + "საგანგებო გაფრთხილებების მიღება ესპანურ ენაზე, როდესაც ეს შესაძლებელია" + diff --git a/res/values-mcc330-kk/strings.xml b/res/values-mcc330-kk/strings.xml new file mode 100644 index 000000000..cee175bca --- /dev/null +++ b/res/values-mcc330-kk/strings.xml @@ -0,0 +1,21 @@ + + + + + "Испан тілі" + "Мүмкін болса, төтенше жағдай хабарландыруларын испан тілінде алу" + diff --git a/res/values-mcc330-km/strings.xml b/res/values-mcc330-km/strings.xml new file mode 100644 index 000000000..b2a137e4c --- /dev/null +++ b/res/values-mcc330-km/strings.xml @@ -0,0 +1,21 @@ + + + + + "អេស្ប៉ាញ" + "ទទួល​ការ​ប្រកាសអាសន្នជាភាសាអេស្ប៉ាញ បើអាច" + diff --git a/res/values-mcc330-kn/strings.xml b/res/values-mcc330-kn/strings.xml new file mode 100644 index 000000000..f65220c0e --- /dev/null +++ b/res/values-mcc330-kn/strings.xml @@ -0,0 +1,21 @@ + + + + + "ಸ್ಪ್ಯಾನಿಶ್" + "ಸಾಧ್ಯವಾದಾಗ ಸ್ಪ್ಯಾನಿಶ್ ಭಾಷೆಯಲ್ಲಿ ತುರ್ತು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಸ್ವೀಕರಿಸಿ" + diff --git a/res/values-mcc330-ko/strings.xml b/res/values-mcc330-ko/strings.xml new file mode 100644 index 000000000..ba2150248 --- /dev/null +++ b/res/values-mcc330-ko/strings.xml @@ -0,0 +1,21 @@ + + + + + "스페인어" + "가능한 경우 스페인어로 응급 상황 알림 받기" + diff --git a/res/values-mcc330-ky/strings.xml b/res/values-mcc330-ky/strings.xml new file mode 100644 index 000000000..348442b4f --- /dev/null +++ b/res/values-mcc330-ky/strings.xml @@ -0,0 +1,21 @@ + + + + + "Испанча" + "Мүмкүн болгондо шашылыш билдирүүлөрдү испан тилинде алыңыз" + diff --git a/res/values-mcc330-lo/strings.xml b/res/values-mcc330-lo/strings.xml new file mode 100644 index 000000000..028f93c1f --- /dev/null +++ b/res/values-mcc330-lo/strings.xml @@ -0,0 +1,21 @@ + + + + + "ສະແປນນິຊ" + "ຮັບການແຈ້ງເຕືອນສຸກເສີນເປັນພາສາສະແປນນິຊເມື່ອເປັນໄປໄດ້" + diff --git a/res/values-mcc330-lt/strings.xml b/res/values-mcc330-lt/strings.xml new file mode 100644 index 000000000..e689f500f --- /dev/null +++ b/res/values-mcc330-lt/strings.xml @@ -0,0 +1,21 @@ + + + + + "Ispanų" + "Kai galima, gauti įspėjimus apie kritinę padėtį ispanų kalba" + diff --git a/res/values-mcc330-lv/strings.xml b/res/values-mcc330-lv/strings.xml new file mode 100644 index 000000000..fbed7c395 --- /dev/null +++ b/res/values-mcc330-lv/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spāņu" + "Saņemt ārkārtas brīdinājumus spāņu valodā, kad iespējams" + diff --git a/res/values-mcc330-mk/strings.xml b/res/values-mcc330-mk/strings.xml new file mode 100644 index 000000000..0e5b8c466 --- /dev/null +++ b/res/values-mcc330-mk/strings.xml @@ -0,0 +1,21 @@ + + + + + "Шпански" + "Примај предупредувања за итни случаи на шпански кога е можно" + diff --git a/res/values-mcc330-ml/strings.xml b/res/values-mcc330-ml/strings.xml new file mode 100644 index 000000000..f459224d4 --- /dev/null +++ b/res/values-mcc330-ml/strings.xml @@ -0,0 +1,21 @@ + + + + + "സ്പാനിഷ്" + "സാധ്യമാകുമ്പോൾ അടിയന്തര മുന്നറിയിപ്പുകൾ സ്പാനിഷിൽ സ്വീകരിക്കുക" + diff --git a/res/values-mcc330-mn/strings.xml b/res/values-mcc330-mn/strings.xml new file mode 100644 index 000000000..4ffb2061b --- /dev/null +++ b/res/values-mcc330-mn/strings.xml @@ -0,0 +1,21 @@ + + + + + "Испани" + "Боломжтой үед яаралтай тусламжийн сэрэмжлүүлгийг Испани хэл дээр хүлээн авах" + diff --git a/res/values-mcc330-mr/strings.xml b/res/values-mcc330-mr/strings.xml new file mode 100644 index 000000000..465f3e5e2 --- /dev/null +++ b/res/values-mcc330-mr/strings.xml @@ -0,0 +1,21 @@ + + + + + "स्पॅनिश" + "शक्य असेल तेव्हा स्पॅनिशमध्ये आणीबाणीच्या सूचना मिळवा" + diff --git a/res/values-mcc330-ms/strings.xml b/res/values-mcc330-ms/strings.xml new file mode 100644 index 000000000..5c27b3fd9 --- /dev/null +++ b/res/values-mcc330-ms/strings.xml @@ -0,0 +1,21 @@ + + + + + "Bahasa Sepanyol" + "Menerima makluman kecemasan dalam bahasa Sepanyol jika boleh" + diff --git a/res/values-mcc330-my/strings.xml b/res/values-mcc330-my/strings.xml new file mode 100644 index 000000000..03074d138 --- /dev/null +++ b/res/values-mcc330-my/strings.xml @@ -0,0 +1,21 @@ + + + + + "စပိန်" + "ဖြစ်နိုင်ပါက အရေးပေါ် သတိပေးချက်များကို စပိန်ဘာသာစကားနှင့် ရယူရန်" + diff --git a/res/values-mcc330-nb/strings.xml b/res/values-mcc330-nb/strings.xml new file mode 100644 index 000000000..23b78b058 --- /dev/null +++ b/res/values-mcc330-nb/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spansk" + "Motta nødvarsler på spansk når det er mulig" + diff --git a/res/values-mcc330-ne/strings.xml b/res/values-mcc330-ne/strings.xml new file mode 100644 index 000000000..0b6153bcd --- /dev/null +++ b/res/values-mcc330-ne/strings.xml @@ -0,0 +1,21 @@ + + + + + "स्पेनी" + "सम्भव हुँदा आपत्‌कालीन अलर्टहरू स्पेनी भाषामा प्राप्त गर्नुहोस्" + diff --git a/res/values-mcc330-nl/strings.xml b/res/values-mcc330-nl/strings.xml new file mode 100644 index 000000000..8fe3a516e --- /dev/null +++ b/res/values-mcc330-nl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spaans" + "Noodmeldingen krijgen in het Spaans, indien mogelijk" + diff --git a/res/values-mcc330-or/strings.xml b/res/values-mcc330-or/strings.xml new file mode 100644 index 000000000..d73814512 --- /dev/null +++ b/res/values-mcc330-or/strings.xml @@ -0,0 +1,21 @@ + + + + + "ସ୍ପେନୀୟ" + "ଯେତେବେଳେ ସମ୍ଭବ ସ୍ପେନୀୟ ଭାଷାରେ ଜରୁରୀକାଳୀନ ଆଲର୍ଟ ପାଆନ୍ତୁ" + diff --git a/res/values-mcc330-pa/strings.xml b/res/values-mcc330-pa/strings.xml new file mode 100644 index 000000000..5f146da3f --- /dev/null +++ b/res/values-mcc330-pa/strings.xml @@ -0,0 +1,21 @@ + + + + + "ਸਪੇਨੀ" + "ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇ ਸਪੇਨੀ ਭਾਸ਼ਾ ਵਿੱਚ ਸੰਕਟਕਾਲੀਨ ਸੁਚੇਤਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ" + diff --git a/res/values-mcc330-pl/strings.xml b/res/values-mcc330-pl/strings.xml new file mode 100644 index 000000000..692fed853 --- /dev/null +++ b/res/values-mcc330-pl/strings.xml @@ -0,0 +1,21 @@ + + + + + "hiszpański" + "Otrzymuj alerty bezpieczeństwa po hiszpańsku, jeśli są dostępne" + diff --git a/res/values-mcc330-pt-rPT/strings.xml b/res/values-mcc330-pt-rPT/strings.xml new file mode 100644 index 000000000..8bff0b24a --- /dev/null +++ b/res/values-mcc330-pt-rPT/strings.xml @@ -0,0 +1,21 @@ + + + + + "Espanhol" + "Receber alertas de emergência em espanhol sempre que possível" + diff --git a/res/values-mcc330-pt/strings.xml b/res/values-mcc330-pt/strings.xml new file mode 100644 index 000000000..8bff0b24a --- /dev/null +++ b/res/values-mcc330-pt/strings.xml @@ -0,0 +1,21 @@ + + + + + "Espanhol" + "Receber alertas de emergência em espanhol sempre que possível" + diff --git a/res/values-mcc330-ro/strings.xml b/res/values-mcc330-ro/strings.xml new file mode 100644 index 000000000..c86b6147b --- /dev/null +++ b/res/values-mcc330-ro/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spaniolă" + "Trimite alerte de urgență în limba spaniolă dacă este posibil" + diff --git a/res/values-mcc330-ru/strings.xml b/res/values-mcc330-ru/strings.xml new file mode 100644 index 000000000..a50279ee6 --- /dev/null +++ b/res/values-mcc330-ru/strings.xml @@ -0,0 +1,21 @@ + + + + + "Испанский" + "Если возможно, получать оповещения о чрезвычайных ситуациях на испанском языке" + diff --git a/res/values-mcc330-si/strings.xml b/res/values-mcc330-si/strings.xml new file mode 100644 index 000000000..df375303d --- /dev/null +++ b/res/values-mcc330-si/strings.xml @@ -0,0 +1,21 @@ + + + + + "ස්පාඤ්ඤ" + "හැකි විට ස්පාඤ්ඤ භාෂාවෙන් හදිසි අනතුරු ඇඟවීම් ලබා ගන්න" + diff --git a/res/values-mcc330-sk/strings.xml b/res/values-mcc330-sk/strings.xml new file mode 100644 index 000000000..157247fcb --- /dev/null +++ b/res/values-mcc330-sk/strings.xml @@ -0,0 +1,21 @@ + + + + + "Španielčina" + "Dostávajte tiesňové upozornenia v španielčine (keď je to možné)" + diff --git a/res/values-mcc330-sl/strings.xml b/res/values-mcc330-sl/strings.xml new file mode 100644 index 000000000..de1156959 --- /dev/null +++ b/res/values-mcc330-sl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Španščina" + "Prejemanje nujnih opozoril v španščini, kadar je to mogoče" + diff --git a/res/values-mcc330-sq/strings.xml b/res/values-mcc330-sq/strings.xml new file mode 100644 index 000000000..abf589ece --- /dev/null +++ b/res/values-mcc330-sq/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanjisht" + "Merri sinjalizimet e urgjencës në spanjisht kur është e mundur" + diff --git a/res/values-mcc330-sr/strings.xml b/res/values-mcc330-sr/strings.xml new file mode 100644 index 000000000..2c0a37143 --- /dev/null +++ b/res/values-mcc330-sr/strings.xml @@ -0,0 +1,21 @@ + + + + + "шпански" + "Примајте обавештења о хитним случајевима на шпанском када је то могуће" + diff --git a/res/values-mcc330-sv/strings.xml b/res/values-mcc330-sv/strings.xml new file mode 100644 index 000000000..e0d66c735 --- /dev/null +++ b/res/values-mcc330-sv/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanska" + "Ta emot varningar på spanska vid nödsituationer när det är möjligt" + diff --git a/res/values-mcc330-sw/strings.xml b/res/values-mcc330-sw/strings.xml new file mode 100644 index 000000000..f48775caa --- /dev/null +++ b/res/values-mcc330-sw/strings.xml @@ -0,0 +1,21 @@ + + + + + "Kihispania" + "Pokea arifa za dharura katika Kihispania inapowezekana" + diff --git a/res/values-mcc330-ta/strings.xml b/res/values-mcc330-ta/strings.xml new file mode 100644 index 000000000..43e94e9cb --- /dev/null +++ b/res/values-mcc330-ta/strings.xml @@ -0,0 +1,21 @@ + + + + + "ஸ்பானிஷ்" + "சாத்தியமான சூழல்களில் அவசரகால விழிப்பூட்டல்களை ஸ்பானிஷ் மொழியில் பெறுக" + diff --git a/res/values-mcc330-te/strings.xml b/res/values-mcc330-te/strings.xml new file mode 100644 index 000000000..e0caf5fcb --- /dev/null +++ b/res/values-mcc330-te/strings.xml @@ -0,0 +1,21 @@ + + + + + "స్పానిష్" + "వీలైనప్పుడు స్పానిష్‌లో ఎమర్జెన్సీ అలర్ట్‌లను అందుకోండి" + diff --git a/res/values-mcc330-th/strings.xml b/res/values-mcc330-th/strings.xml new file mode 100644 index 000000000..1c67cf8a2 --- /dev/null +++ b/res/values-mcc330-th/strings.xml @@ -0,0 +1,21 @@ + + + + + "สเปน" + "รับการแจ้งเหตุฉุกเฉินเป็นภาษาสเปน เมื่อเป็นไปได้" + diff --git a/res/values-mcc330-tl/strings.xml b/res/values-mcc330-tl/strings.xml new file mode 100644 index 000000000..15cc82981 --- /dev/null +++ b/res/values-mcc330-tl/strings.xml @@ -0,0 +1,21 @@ + + + + + "Spanish" + "Makatanggap ng mga alerto sa emergency na nasa wikang Spanish kapag posible" + diff --git a/res/values-mcc330-tr/strings.xml b/res/values-mcc330-tr/strings.xml new file mode 100644 index 000000000..0cc768ad5 --- /dev/null +++ b/res/values-mcc330-tr/strings.xml @@ -0,0 +1,21 @@ + + + + + "İspanyolca" + "Mümkün olduğunda acil durum uyarılarını İspanyolca alın" + diff --git a/res/values-mcc330-uk/strings.xml b/res/values-mcc330-uk/strings.xml new file mode 100644 index 000000000..fcbb80334 --- /dev/null +++ b/res/values-mcc330-uk/strings.xml @@ -0,0 +1,21 @@ + + + + + "Іспанська" + "Отримувати екстрені сповіщення іспанською мовою, коли це можливо" + diff --git a/res/values-mcc330-ur/strings.xml b/res/values-mcc330-ur/strings.xml new file mode 100644 index 000000000..3de0d0e93 --- /dev/null +++ b/res/values-mcc330-ur/strings.xml @@ -0,0 +1,21 @@ + + + + + "ہسپانوی" + "ممکن ہونے پر ہسپانوی میں ہنگامی الرٹس موصول کریں" + diff --git a/res/values-mcc330-uz/strings.xml b/res/values-mcc330-uz/strings.xml new file mode 100644 index 000000000..819f34ddb --- /dev/null +++ b/res/values-mcc330-uz/strings.xml @@ -0,0 +1,21 @@ + + + + + "Ispan" + "Imkoni boʻlsa, favqulodda ogohlantirishlar Ispan tilida kelsin" + diff --git a/res/values-mcc330-vi/strings.xml b/res/values-mcc330-vi/strings.xml new file mode 100644 index 000000000..67895b6f2 --- /dev/null +++ b/res/values-mcc330-vi/strings.xml @@ -0,0 +1,21 @@ + + + + + "Tiếng Tây Ban Nha" + "Nhận cảnh báo khẩn cấp bằng tiếng Tây Ban Nha khi có thể" + diff --git a/res/values-mcc330-zh-rCN/strings.xml b/res/values-mcc330-zh-rCN/strings.xml new file mode 100644 index 000000000..683e0efb0 --- /dev/null +++ b/res/values-mcc330-zh-rCN/strings.xml @@ -0,0 +1,21 @@ + + + + + "西班牙语" + "接收西班牙语的紧急情况警报(如果可能)" + diff --git a/res/values-mcc330-zh-rHK/strings.xml b/res/values-mcc330-zh-rHK/strings.xml new file mode 100644 index 000000000..b3a4a18f8 --- /dev/null +++ b/res/values-mcc330-zh-rHK/strings.xml @@ -0,0 +1,21 @@ + + + + + "西班牙文" + "接收西班牙文的緊急警示 (如有)" + diff --git a/res/values-mcc330-zh-rTW/strings.xml b/res/values-mcc330-zh-rTW/strings.xml new file mode 100644 index 000000000..05c9641c4 --- /dev/null +++ b/res/values-mcc330-zh-rTW/strings.xml @@ -0,0 +1,21 @@ + + + + + "西班牙文" + "接收西班牙文的緊急警報 (如果有的話)" + diff --git a/res/values-mcc330-zu/strings.xml b/res/values-mcc330-zu/strings.xml new file mode 100644 index 000000000..2e5ad01e8 --- /dev/null +++ b/res/values-mcc330-zu/strings.xml @@ -0,0 +1,21 @@ + + + + + "Isi-Spanish" + "Thola izexwayiso zesimo esiphuthumayo nge-Spanish uma kukhonakala" + -- cgit v1.2.3 From fb7f2fa01b6122c88b329d12166d6ab7e69c6784 Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Wed, 5 Jan 2022 23:36:25 +0000 Subject: Revert "Revert "Change the broadcast intent of START_CONFIG to app inside"" This reverts commit acb62a804f8185564f0cb4a8a8274a84bd4ff3ee. Reason for revert: The fix should be in March to sync up with QPR release Change-Id: I1c37adfbd7eac95a205a698e7483c9125005f1e3 --- AndroidManifest.xml | 1 - AndroidManifest_Platform.xml | 1 - .../cellbroadcastreceiver/CellBroadcastBackupAgent.java | 3 ++- .../CellBroadcastInternalReceiver.java | 12 ++++++++++++ .../cellbroadcastreceiver/CellBroadcastReceiver.java | 3 +-- .../unit/CellBroadcastBackupAgentTest.java | 15 +++++++++++---- .../unit/CellBroadcastInternalReceiverTest.java | 13 +++++++++++++ .../unit/CellBroadcastReceiverTest.java | 3 ++- 8 files changed, 41 insertions(+), 10 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 41b6cda9f..0c83fd3b5 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -151,7 +151,6 @@ - diff --git a/AndroidManifest_Platform.xml b/AndroidManifest_Platform.xml index 97fe7231a..5d6b226b0 100644 --- a/AndroidManifest_Platform.xml +++ b/AndroidManifest_Platform.xml @@ -129,7 +129,6 @@ - diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java b/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java index 620276c83..185a86a52 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastBackupAgent.java @@ -48,7 +48,8 @@ public class CellBroadcastBackupAgent extends BackupAgentHelper @Override public void onRestoreFinished() { Log.d(TAG, "Restore finished."); - Intent intent = new Intent(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION); + Intent intent = new Intent(getApplicationContext(), CellBroadcastInternalReceiver.class); + intent.setAction(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION); // Cell broadcast was configured during boot up before the shared preference is restored, // we need to re-configure it. diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java index 455c5b68c..9a7d3f656 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastInternalReceiver.java @@ -45,12 +45,24 @@ public class CellBroadcastInternalReceiver extends BroadcastReceiver { }); } + /** + * This method's purpose if to enable unit testing + */ + @VisibleForTesting + public void startConfigServiceToEnableChannels(Context context) { + CellBroadcastReceiver.startConfigService(context, + CellBroadcastConfigService.ACTION_ENABLE_CHANNELS); + } + @Override public void onReceive(Context context, Intent intent) { if (CellBroadcastReceiver.ACTION_MARK_AS_READ.equals(intent.getAction())) { final long deliveryTime = intent.getLongExtra( CellBroadcastReceiver.EXTRA_DELIVERY_TIME, -1); getCellBroadcastTask(context, deliveryTime); + } else if (CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION.equals( + intent.getAction())) { + startConfigServiceToEnableChannels(context); } } } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index 14ebe3b0c..0907d15aa 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -155,8 +155,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { // going forward. int ss = intent.getIntExtra(EXTRA_VOICE_REG_STATE, ServiceState.STATE_IN_SERVICE); onServiceStateChanged(context, res, ss); - } else if (CELLBROADCAST_START_CONFIG_ACTION.equals(action) - || SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) { + } else if (SubscriptionManager.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED.equals(action)) { startConfigServiceToEnableChannels(); } else if (Telephony.Sms.Intents.ACTION_SMS_EMERGENCY_CB_RECEIVED.equals(action) || Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) { diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java index bfba23beb..97365a441 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastBackupAgentTest.java @@ -16,9 +16,10 @@ package com.android.cellbroadcastreceiver.unit; - +import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; import android.app.backup.BackupAgentHelper; @@ -28,6 +29,7 @@ import android.content.Intent; import android.os.UserHandle; import com.android.cellbroadcastreceiver.CellBroadcastBackupAgent; +import com.android.cellbroadcastreceiver.CellBroadcastInternalReceiver; import org.junit.Before; import org.junit.Test; @@ -73,12 +75,17 @@ public class CellBroadcastBackupAgentTest { @Test public void testRestoreFinish() throws Exception { + final String packageName = CellBroadcastInternalReceiver.class.getPackage().getName(); + final String className = CellBroadcastInternalReceiver.class.getName(); + doReturn(mMockContext).when(mMockContext).getApplicationContext(); + doReturn(packageName).when(mMockContext).getPackageName(); mockBackupDispatcher(); mBackupAgentUT.attach(mMockContext); - ArgumentCaptor intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); + ArgumentCaptor intentArg = ArgumentCaptor.forClass(Intent.class); mBackupAgentUT.onRestoreFinished(); - verify(mMockContext).sendBroadcastAsUser(intentArgumentCaptor.capture(), - eq(UserHandle.SYSTEM)); + verify(mMockContext).sendBroadcastAsUser(intentArg.capture(), eq(UserHandle.SYSTEM)); + assertEquals(packageName, intentArg.getValue().getComponent().getPackageName()); + assertEquals(className, intentArg.getValue().getComponent().getClassName()); } } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java index 713b91b8e..e89e31f86 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastInternalReceiverTest.java @@ -16,6 +16,7 @@ package com.android.cellbroadcastreceiver.unit; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doNothing; @@ -26,6 +27,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.os.UserManager; import com.android.cellbroadcastreceiver.CellBroadcastInternalReceiver; import com.android.cellbroadcastreceiver.CellBroadcastReceiver; @@ -38,6 +40,7 @@ import org.mockito.MockitoAnnotations; public class CellBroadcastInternalReceiverTest extends CellBroadcastTest { @Mock Intent mIntent; + @Mock UserManager mUserManager; private Configuration mConfiguration = new Configuration(); private CellBroadcastInternalReceiver mReceiver; @@ -49,6 +52,8 @@ public class CellBroadcastInternalReceiverTest extends CellBroadcastTest { doReturn(mConfiguration).when(mResources).getConfiguration(); mReceiver = spy(new CellBroadcastInternalReceiver()); doReturn(mContext).when(mContext).getApplicationContext(); + doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE); + doReturn(false).when(mUserManager).isSystemUser(); } @Test @@ -60,4 +65,12 @@ public class CellBroadcastInternalReceiverTest extends CellBroadcastTest { verify(mReceiver).getCellBroadcastTask(nullable(Context.class), anyLong()); } + @Test + public void testOnReceive_cellbroadcastStartConfigAction() { + doReturn(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION).when(mIntent).getAction(); + mReceiver.onReceive(mContext, mIntent); + + verify(mReceiver).startConfigServiceToEnableChannels(any()); + } + } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java index 8b6377c90..24251920c 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java @@ -164,8 +164,9 @@ public class CellBroadcastReceiverTest extends CellBroadcastTest { public void testOnReceive_cellbroadcastStartConfigAction() { doReturn(CellBroadcastReceiver.CELLBROADCAST_START_CONFIG_ACTION).when(mIntent).getAction(); mCellBroadcastReceiver.onReceive(mContext, mIntent); + verify(mCellBroadcastReceiver, never()).initializeSharedPreference(any(), anyInt()); - verify(mCellBroadcastReceiver).startConfigServiceToEnableChannels(); + verify(mCellBroadcastReceiver, never()).startConfigServiceToEnableChannels(); } @Test -- cgit v1.2.3 From f8bd708ca4d68e619852549433bb8b1ed07dee0c Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Thu, 6 Jan 2022 23:00:41 +0000 Subject: Reset the cache of CellBroadcastChannelRange The cache of CellBroadcastChannelRange should be reset when sim removed or loaded. The intent of ACTION_SIM_CARD_STATE_CHANGED is not good for such case as SIM_STATE_PRESENT may be sent when sim ready but record is not loaded, and no more broadcast when loaded. ACTION_CARRIER_CONFIG_CHANGED can cover all the cases. Bug: 213027609 Test: atest CellBroadcastReceiverUnitTests:CellBroadcastReceiverTest Test: manually to remove/insert sim Change-Id: I8029376c474c635cc4e374a87e6e496e71ff867a --- AndroidManifest.xml | 1 - AndroidManifest_Platform.xml | 1 - .../cellbroadcastreceiver/CellBroadcastReceiver.java | 19 +++++++++++-------- .../unit/CellBroadcastReceiverTest.java | 1 + 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0c83fd3b5..e40912d04 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -155,7 +155,6 @@ - diff --git a/AndroidManifest_Platform.xml b/AndroidManifest_Platform.xml index 5d6b226b0..2b06c6a3e 100644 --- a/AndroidManifest_Platform.xml +++ b/AndroidManifest_Platform.xml @@ -135,7 +135,6 @@ - diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index 0907d15aa..63be97ffd 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -129,6 +129,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { } else if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)) { if (!intent.getBooleanExtra( "android.telephony.extra.REBROADCAST_ON_UNLOCK", false)) { + resetCellBroadcastChannelRanges(); int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, SubscriptionManager.INVALID_SUBSCRIPTION_ID); initializeSharedPreference(context, subId); @@ -195,14 +196,6 @@ public class CellBroadcastReceiver extends BroadcastReceiver { provider.resyncToSmsInbox(mContext); return true; }); - } else if (TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED.equals(action)) { - int sim_state = intent.getIntExtra( - TelephonyManager.EXTRA_SIM_STATE, TelephonyManager.SIM_STATE_UNKNOWN); - - if (sim_state == TelephonyManager.SIM_STATE_ABSENT - || sim_state == TelephonyManager.SIM_STATE_PRESENT) { - CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); - } } else { Log.w(TAG, "onReceive() unexpected action " + action); } @@ -708,6 +701,16 @@ public class CellBroadcastReceiver extends BroadcastReceiver { } } + /** + * Reset cached CellBroadcastChannelRanges + * + * This method's purpose is to enable unit testing + */ + @VisibleForTesting + public void resetCellBroadcastChannelRanges() { + CellBroadcastChannelManager.clearAllCellBroadcastChannelRanges(); + } + private static void log(String msg) { Log.d(TAG, msg); } diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java index 24251920c..5b57ab548 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastReceiverTest.java @@ -138,6 +138,7 @@ public class CellBroadcastReceiverTest extends CellBroadcastTest { verify(mCellBroadcastReceiver).initializeSharedPreference(any(), anyInt()); verify(mCellBroadcastReceiver).startConfigServiceToEnableChannels(); verify(mCellBroadcastReceiver).enableLauncher(); + verify(mCellBroadcastReceiver).resetCellBroadcastChannelRanges(); } @Test -- cgit v1.2.3 From 4d1883f80ab94a296aa791798cdf79ca4b533c00 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 7 Jan 2022 06:53:25 +0000 Subject: Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I179c8cc34cd5b062b5b64e658ca8b64d2e493897 --- res/values-es-rUS/strings.xml | 2 +- res/values-ko/strings.xml | 8 ++++---- res/values-mcc234-it/strings.xml | 2 +- res/values-mcc234-ko/strings.xml | 2 +- res/values-mcc424-it/strings.xml | 2 +- res/values-mcc424-ko/strings.xml | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 5bd6b7072..ed26295b6 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -135,7 +135,7 @@ "%s alertas no leídas" "Alertas nuevas" "Mostrar diálogo para inhabilitar después de la primera alerta (salvo Alerta Presidencial)" - "Mostrar cuadro de desactivación" + "Mostrar diálogo para inhabilitar" "Actualmente, recibes alertas de emergencia inalámbricas. ¿Quieres seguir recibiéndolas?" "Sí" "No" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index b12ac36a3..372baf958 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "긴급 재난 문자" "긴급 재난 문자" - "무선 긴급 알림" + "긴급 재난 문자" "위급 재난 문자" "긴급 재난 문자" "안전 안내 문자" @@ -62,7 +62,7 @@ "SIM을 기반으로 자동 WEA 설정을 변경했습니다." "경보 허용" "재난문자 알림 수신" - "다시 알림 간격" + "경보 다시 알림" "경보 메시지를 음성으로 알림" "재난문자를 TTS(텍스트 음성 변환) 기능을 사용하여 음성으로 알림" "경보 알림음이 보통 볼륨으로 재생됨" @@ -86,7 +86,7 @@ "주 및 지방 당국으로부터 테스트 메시지 수신" "긴급 재난 문자" "치명적인 사건 경고" - "테스트 알림" + "테스트 경보" "이동통신사 테스트 및 안전 경보 시스템의 월간 테스트 받기" @@ -147,7 +147,7 @@ "15분마다" "없음" - "무선 긴급 알림" + "긴급 재난 문자" "대통령령 비상 메시지" "대통령이 발령한 대국민 비상 메시지입니다. 이 알림은 끌 수 없습니다" diff --git a/res/values-mcc234-it/strings.xml b/res/values-mcc234-it/strings.xml index 2ca84109c..4695c9091 100644 --- a/res/values-mcc234-it/strings.xml +++ b/res/values-mcc234-it/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Allerte per condizioni estreme" "Allerte per condizioni gravi" - "Avvisi di prova" + "Allerte di prova" "Simulazioni di avvisi" "Allerta governativa" "Allerta per condizioni estreme" diff --git a/res/values-mcc234-ko/strings.xml b/res/values-mcc234-ko/strings.xml index ff7d8b854..b4861bd21 100644 --- a/res/values-mcc234-ko/strings.xml +++ b/res/values-mcc234-ko/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "안전 안내 문자" "위험 알림 문자" - "테스트 알림 문자" + "테스트 경보" "훈련 알림 문자" "정부 기관 알림 문자" "안전 안내 문자" diff --git a/res/values-mcc424-it/strings.xml b/res/values-mcc424-it/strings.xml index cc2ef53b7..817cff081 100644 --- a/res/values-mcc424-it/strings.xml +++ b/res/values-mcc424-it/strings.xml @@ -28,5 +28,5 @@ "Allerta di prova" "Avvisi di allerta" "Allerte sicurezza pubblica" - "Avvisi di prova" + "Allerte di prova" diff --git a/res/values-mcc424-ko/strings.xml b/res/values-mcc424-ko/strings.xml index e4c580337..f38491f5b 100644 --- a/res/values-mcc424-ko/strings.xml +++ b/res/values-mcc424-ko/strings.xml @@ -28,5 +28,5 @@ "테스트 알림" "경고 알림" "공공 안전 알림" - "테스트 알림" + "테스트 경보" -- cgit v1.2.3 From 612b3e1a1f5a6c59798dbfe9480de7144932608d Mon Sep 17 00:00:00 2001 From: Hyein Yu Date: Thu, 6 Jan 2022 16:14:11 +0000 Subject: Add unit test for channel cofigurations not covered before Bug: 213237329 Test: atest com.android.cellbroadcastreceiver.unit.CellBroadcastConfigServiceTest Change-Id: I5aab587bfb52b4c80994211aa9e1bd828af6ff55 --- .../unit/CellBroadcastConfigServiceTest.java | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java index 6d60b8ceb..6aae8bab6 100644 --- a/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java +++ b/tests/unit/src/com/android/cellbroadcastreceiver/unit/CellBroadcastConfigServiceTest.java @@ -147,6 +147,20 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { "0x1003-0x1003:rat=cdma", "0x1128-0x1128:rat=gsm", }); + putResources(com.android.cellbroadcastreceiver.R.array + .geo_fencing_trigger_messages_range_strings, new String[]{ + "0x1130:rat=gsm, emergency=true", + }); + putResources(com.android.cellbroadcastreceiver.R.array + .state_local_test_alert_range_strings, new String[]{ + "0x112E:rat=gsm, emergency=true", + "0x112F:rat=gsm, emergency=true", + }); + putResources(com.android.cellbroadcastreceiver.R.array + .public_safety_messages_channels_range_strings, new String[]{ + "0x112C:rat=gsm, emergency=true", + "0x112D:rat=gsm, emergency=true", + }); } @After @@ -324,6 +338,30 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST), eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_REQUIRED_MONTHLY_TEST), eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_PUBLIC_SAFETY), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST), + eq(SmsCbConstants.MESSAGE_ID_CMAS_ALERT_STATE_LOCAL_TEST), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); } /** @@ -663,6 +701,98 @@ public class CellBroadcastConfigServiceTest extends CellBroadcastTest { eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); } + /** + * Test enabling channels for geo-fencing message + */ + @Test + @SmallTest + public void testEnablingGeoFencingTriggeredChannel() throws Exception { + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + putResources(com.android.cellbroadcastreceiver.R.array + .geo_fencing_trigger_messages_range_strings, new String[]{ + }); + + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + verify(mMockedSmsService, times(0)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbConstants.MESSAGE_ID_CMAS_GEO_FENCING_TRIGGER), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + } + + /** + * Test enabling channels for non-cmas series message + */ + @Test + @SmallTest + public void testEnablingNonCmasMessages() throws Exception { + putResources(com.android.cellbroadcastreceiver.R.array + .emergency_alerts_channels_range_strings, new String[]{ + "0xA000:rat=gsm", + }); + setPreference(CellBroadcastSettings.KEY_ENABLE_ALERTS_MASTER_TOGGLE, true); + setPreference(CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, true); + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(0xA000), + eq(0xA000), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + setPreference(CellBroadcastSettings.KEY_ENABLE_ALERTS_MASTER_TOGGLE, true); + setPreference(CellBroadcastSettings.KEY_ENABLE_EMERGENCY_ALERTS, false); + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(0xA000), + eq(0xA000), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + } + + /** + * Test enabling channels for additional channels + */ + @Test + @SmallTest + public void testEnablingAdditionalChannels() throws Exception { + putResources(com.android.cellbroadcastreceiver.R.array + .additional_cbs_channels_strings, new String[]{ + "0x032:type=area, emergency=false", + }); + doReturn(true).when(mMockedSharedPreferences).getBoolean( + eq(CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS), eq(false)); + doReturn(mResources).when(mConfigService).getResources(anyInt(), anyString()); + putResources(com.android.cellbroadcastreceiver.R.bool.config_showAreaUpdateInfoSettings, + true); + + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + verify(mMockedSmsService, times(1)).enableCellBroadcastRangeForSubscriber( + eq(0), + eq(0x032), + eq(0x032), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + + doReturn(false).when(mMockedSharedPreferences).getBoolean( + eq(CellBroadcastSettings.KEY_ENABLE_AREA_UPDATE_INFO_ALERTS), eq(false)); + mConfigService.enableCellBroadcastChannels(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + + verify(mMockedSmsService, times(1)).disableCellBroadcastRangeForSubscriber( + eq(0), + eq(0x032), + eq(0x032), + eq(SmsCbMessage.MESSAGE_FORMAT_3GPP)); + } + /** * Test handling the intent to enable channels */ -- cgit v1.2.3