请优先在Mms AP中确认CB Enabled,并且 CMASReceiver.app -> Settings -> 查看Emergency alerts选项是否被勾选,
若依然被勾选还接收不到,请做如下修改:
main_log中搜索"ignore CB RECEIVED ACTION because disabled enable_cell_broadcast"后,
需要把 CMASReceiver 中 enable_cell_broadcast 默认值全部改为true
(1) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml
<setting key="enable_cell_broadcast" defaultValue="true"/> // make sure defaultValue="true"
(2) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml
<PreferenceCategory
android:key="category_cell_broadcast_settings"
android:title="@string/sms_cb_settings" >
<!-- Enable Cell broadcast -->
<com.mediatek.cellbroadcastreceiver.CheckBoxAndSettingsPreference
android:defaultValue="true" // make sure defaultValue="true"
android:enabled="true"
android:key="enable_cell_broadcast"
android:summary="@string/enable_cell_broadcast_summary"
android:title="@string/enable_cell_broadcast_title" />
</PreferenceCategory>
(3) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java
protected void onReceiveWithPrivilege(Context context, Intent intent, boolean privileged) {
……
} else if (Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION.equals(action) ||
Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) {
// ignore incoming messages if CMAS option is off.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enableCB = prefs.getBoolean(
CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true); // false -> true
if (!enableCB) {
log("ignore CB RECEIVED ACTION because disabled enable_cell_broadcast");
return;
}
……
}
(4) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java
@Override
protected void onHandleIntent(Intent intent) {
……
} else if (CellBroadcastReceiver.SMS_STATE_CHANGED_ACTION.equals(intent.getAction())) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean enableCB = false;
if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) {
enableCB = true;
// begin [
prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();
// ] end
Log.d(TAG, "do not contain the enable_cell_broadcast ");
} else {
enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,
true); // false -> true
Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB);
}
若依然被勾选还接收不到,请做如下修改:
main_log中搜索"ignore CB RECEIVED ACTION because disabled enable_cell_broadcast"后,
需要把 CMASReceiver 中 enable_cell_broadcast 默认值全部改为true
(1) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/default_preference.xml
<setting key="enable_cell_broadcast" defaultValue="true"/> // make sure defaultValue="true"
(2) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/res/xml/preferences_main.xml
<PreferenceCategory
android:key="category_cell_broadcast_settings"
android:title="@string/sms_cb_settings" >
<!-- Enable Cell broadcast -->
<com.mediatek.cellbroadcastreceiver.CheckBoxAndSettingsPreference
android:defaultValue="true" // make sure defaultValue="true"
android:enabled="true"
android:key="enable_cell_broadcast"
android:summary="@string/enable_cell_broadcast_summary"
android:title="@string/enable_cell_broadcast_title" />
</PreferenceCategory>
(3) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastReceiver.java
protected void onReceiveWithPrivilege(Context context, Intent intent, boolean privileged) {
……
} else if (Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION.equals(action) ||
Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) {
// ignore incoming messages if CMAS option is off.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enableCB = prefs.getBoolean(
CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true); // false -> true
if (!enableCB) {
log("ignore CB RECEIVED ACTION because disabled enable_cell_broadcast");
return;
}
……
}
(4) /vendor/mediatek/proprietary/packages/apps/CMASReceiver/src/com/mediatek/cellbroadcastreceiver/CellBroadcastConfigService.java
@Override
protected void onHandleIntent(Intent intent) {
……
} else if (CellBroadcastReceiver.SMS_STATE_CHANGED_ACTION.equals(intent.getAction())) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean enableCB = false;
if (!prefs.contains(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST)) {
enableCB = true;
// begin [
prefs.edit().putBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST, true).commit();
// ] end
Log.d(TAG, "do not contain the enable_cell_broadcast ");
} else {
enableCB = prefs.getBoolean(CheckBoxAndSettingsPreference.KEY_ENABLE_CELLBROADCAST,
true); // false -> true
Log.d(TAG, "contain the enable_cell_broadcast,enableCB = " + enableCB);
}