我司因为做的是国外的订单,最近因为实验室无法通过紧急警报广播而感到无比的头大,还好昨天海外客户那边已经给出了好消息,通过了实验室认证。
对于O及以后的版本,必须要修改frameworks/base/core/res/res/values/config.xml中的config_defaultCellBroadcastReceiverPkg这个属性
- <string name="config_defaultCellBroadcastReceiverPkg" translatable="false">com.android.cellbroadcastreceiver</string>
+ <string name="config_defaultCellBroadcastReceiverPkg" translatable="false">com.mediatek.cellbroadcastreceiver</string>
其中我们要知道小区广播的区别和种类,可以看看我的另一个博客内容,在这里就不详细描述了
开启 MTK_CMAS_SUPPORT = yes,并修改以下内容:
1.vendor/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml
<setting key="enable_cmas_extreme_threat_alerts" defaultValue="true"/>
<setting key="enable_cmas_severe_threat_alerts" defaultValue="true"/>
- <setting key="enable_cmas_rmt_support" defaultValue="false"/>
- <setting key="enable_cmas_exercise_support" defaultValue="false"/>
+ <setting key="enable_cmas_rmt_support" defaultValue="true"/>
+ <setting key="enable_cmas_exercise_support" defaultValue="true"/>
<setting key="enable_cmas_operator_choice_support" defaultValue="false"/>
<setting key="enable_cmas_repeat_alert" defaultValue="true"/>
2.vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastAlertService.java
case SmsCbCmasInfo.CMAS_CLASS_REQUIRED_MONTHLY_TEST:
retValue = PreferenceManager.getDefaultSharedPreferences(this).
- getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, false);
+ getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT, true);
Log.d(TAG, "in isMessageEnabledByUser , RMT setting " + retValue);
break;
case SmsCbCmasInfo.CMAS_CLASS_CMAS_EXERCISE:
retValue = PreferenceManager.getDefaultSharedPreferences(this).
- getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, false);
+ getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT, true);
Log.d(TAG, "in isMessageEnabledByUser , EXER setting " + retValue);
break;
case SmsCbCmasInfo.CMAS_CLASS_OPERATOR_DEFINED_USE:
3.vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java
@@ -245,7 +245,7 @@ public class CellBroadcastConfigService extends IntentService {
boolean isRmtEnable = PreferenceManager.getDefaultSharedPreferences(this).
getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT,
- false);
+ true);
Log.d(TAG, "isRmtEnable = " + isRmtEnable);
// Enable/Disable CDMA CMAS test messages.
if (CellBroadcastReceiver.phoneIsCdma(getApplicationContext())) {
@@ -265,7 +265,7 @@ public class CellBroadcastConfigService extends IntentService {
boolean isExerciseEnable = PreferenceManager.getDefaultSharedPreferences(this).
getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT,
- false);
+ true);
setCellBroadcastRange(manager, isExerciseEnable,
SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE,
@@ -376,10 +376,10 @@ public class CellBroadcastConfigService extends IntentService {
SharedPreferences.Editor editor = prefs.edit();
if (!prefs.contains(ENABLE_CMAS_RMT_SUPPORT)) {
Log.d(TAG, "set RMT false");
- editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, false);
+ editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, true);
}
if (!prefs.contains(ENABLE_CMAS_EXERCISE_SUPPORT)) {
- editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, false);
+ editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, true);
}
if (!prefs.contains(ENABLE_CMAS_OPERATOR_CHOICE_SUPPORT)) {
editor.putBoolean(ENABLE_CMAS_OPERATOR_CHOICE_SUPPORT, false);
@@ -454,10 +454,11 @@ public class CellBroadcastConfigService extends IntentService {
boolean enableCB = false;
if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) {
enableCB = true;
+ prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();
Log.d(TAG, "do not contain the enable_cell_broadcast ");
} else {
enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,
- false);
+ true);
Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB);
}
Log.d(TAG, "SMS_STATE_CHANGED_ACTION enableCB " + enableCB);
4.vendor/mediatek/proprietary/packages/apps/CmasEM/res/xml/cmas_setting.xml
android:key="enable_cmas_rmt_support"
android:title="@string/cmas_rmt_title"
android:summary="@string/cmas_rmt_summary"
- android:persistent="false">
+ android:persistent="true">
</CheckBoxPreference>
<CheckBoxPreference
android:key="enable_cmas_exercise_support"
android:title="@string/cmas_exercise_title"
android:summary="@string/cmas_exercise_summary"
- android:persistent="false">
+ android:persistent="true">
</CheckBoxPreference>
<CheckBoxPreference
android:key="enable_cmas_operator_choice_support"
5.vendor/mediatek/proprietary/frameworks/opt/telephony-base/java/com/mediatek/internal/telephony/gsm/MtkSmsCbConstants.java
public static final int MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_911
= 0x038F; // 911
+ /** Channel 916 required by allview. ID 0~999 is allocated by GSMA */
+ public static final int MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916
+ = 0x0394; // 916
+
+ /** Channel 917 required by allview. ID 0~999 is allocated by GSMA */
+ public static final int MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917
+ = 0x0395; // 917
+
+ /** Channel 918 required by allview. ID 0~999 is allocated by GSMA */
+ public static final int MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918
+ = 0x0396; // 918
+
/** Channel 919 required by Taiwan NCC and Israel. ID 0~999 is allocated by GSMA */
public static final int MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919
= 0x0397; // 919
6.vendor/mediatek/proprietary/frameworks/opt/telephony-base/java/com/mediatek/internal/telephony/gsm/MtkSmsCbHeader.java
@@ -213,6 +213,13 @@ public class MtkSmsCbHeader extends SmsCbHeader {
} else if (checkNationalEmergencyChannels()){
result = true;
}
+ if (mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_911
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919) {
+ result = true;
+ }
return result;
}
@@ -231,6 +238,14 @@ public class MtkSmsCbHeader extends SmsCbHeader {
result = true;
}
+ if (mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_911
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918
+ || mMessageIdentifier == MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919) {
+ result = true;
+ }
+
return result;
}
@@ -245,6 +260,9 @@ public class MtkSmsCbHeader extends SmsCbHeader {
// In order to support several national requirements about PWS, we have to modify
// here directly.
case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_911:
+ case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916:
+ case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917:
+ case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918:
case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919:
case MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_921:
return SmsCbCmasInfo.CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT;
7.vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java
@@ -144,6 +144,31 @@ public class CellBroadcastConfigService extends IntentService {
SmsEnvelope.SERVICE_CATEGORY_CMAS_PRESIDENTIAL_LEVEL_ALERT);
}
+ setCellBroadcastRange(manager, true,
+ SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
+ 916,
+ 919);
+
+ setCellBroadcastRange(manager, true,
+ SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_916);
+
+ setCellBroadcastRange(manager, true,
+ SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_917);
+
+ setCellBroadcastRange(manager, true,
+ SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_918);
+
+ setCellBroadcastRange(manager, true,
+ SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919,
+ MtkSmsCbConstants.MESSAGE_ID_GSMA_ALLOCATED_CHANNEL_919);
+
/** Enable GSM ETWS series messages. */
// Enable/Disable GSM ETWS messages (4352 ~ 4354).
@@ -245,7 +270,7 @@ public class CellBroadcastConfigService extends IntentService {
boolean isRmtEnable = PreferenceManager.getDefaultSharedPreferences(this).
getBoolean(CellBroadcastConfigService.ENABLE_CMAS_RMT_SUPPORT,
- true);
+ false);
Log.d(TAG, "isRmtEnable = " + isRmtEnable);
// Enable/Disable CDMA CMAS test messages.
if (CellBroadcastReceiver.phoneIsCdma(getApplicationContext())) {
@@ -265,7 +290,7 @@ public class CellBroadcastConfigService extends IntentService {
boolean isExerciseEnable = PreferenceManager.getDefaultSharedPreferences(this).
getBoolean(CellBroadcastConfigService.ENABLE_CMAS_EXERCISE_SUPPORT,
- true);
+ false);
setCellBroadcastRange(manager, isExerciseEnable,
SmsManager.CELL_BROADCAST_RAN_TYPE_GSM,
SmsCbConstants.MESSAGE_ID_CMAS_ALERT_EXERCISE,
@@ -375,11 +400,18 @@ public class CellBroadcastConfigService extends IntentService {
if (intent.getBooleanExtra("isBootCompleted", false)) {
SharedPreferences.Editor editor = prefs.edit();
if (!prefs.contains(ENABLE_CMAS_RMT_SUPPORT)) {
- Log.d(TAG, "set RMT false");
+ //*/ ALLVIEW,20180203.
editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, true);
+ /*/
+ editor.putBoolean(ENABLE_CMAS_RMT_SUPPORT, false);
+ //*/
}
if (!prefs.contains(ENABLE_CMAS_EXERCISE_SUPPORT)) {
+ //*/ ALLVIEW,20180203.
editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, true);
+ /*/
+ editor.putBoolean(ENABLE_CMAS_EXERCISE_SUPPORT, false);
+ //*/
}
if (!prefs.contains(ENABLE_CMAS_OPERATOR_CHOICE_SUPPORT)) {
editor.putBoolean(ENABLE_CMAS_OPERATOR_CHOICE_SUPPORT, false);
@@ -454,11 +486,18 @@ public class CellBroadcastConfigService extends IntentService {
boolean enableCB = false;
if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) {
enableCB = true;
- prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();
+ //*/ ALLVIEW,20180203.
+ prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();
+ //*/
Log.d(TAG, "do not contain the enable_cell_broadcast ");
} else {
+ //*/ ALLVIEW,20180203.
enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,
true);
+ /*/
+ enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,
+ false);
+ //*/
Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB);
}
Log.d(TAG, "SMS_STATE_CHANGED_ACTION enableCB " + enableCB);
8.vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -356,7 +356,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
isCdma = true;
}
- return isCdma;
+ return true;
}
private static void log(String msg) {
注:
以上是我这项目有关通关实验室紧急警报的全部修改了,如有问题,可以留言!