首页 > 代码库 > android 如何屏蔽接收来自某些信道的小区广播消息
android 如何屏蔽接收来自某些信道的小区广播消息
客户发现4370~4382的小区广播信道被打开了,想屏蔽这些信道的小区广播消息,可以参考如下设置:
1. 在SmsCbConstants.java(alps/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm) 中添加宏:
public static final int MESSAGE_ID_CBDD_IDENTIFIER_MIN = 0x1112; // add by mtk for 4370
public static final int MESSAGE_ID_CBDD_IDENTIFIER_MAX = 0x111E; // add by mtk for 4382
2. 在 SmsCbHeader.java(alps/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm)中添加个判断:
public SmsCbHeader(byte[] pdu, boolean isEtwsPrimary) throws IllegalArgumentException{
……
mMessageIdentifier = ((pdu[2] & 0xff)<<8)| (pdu[3] & 0xff);
// add by mtk for 4370 ~ 4382
if(mMessageIdentifier >= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MIN && mMessageIdentifier <= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MAX )
{
return ;
}
// add by mtk for 4370 ~ 4382
}
3. 在GsmCellBroadcastHandler.java 中对handleGsmBroadcastSms() 方法做如下修改:
private SmsCbMessage handleGsmBroadcastSms(AsyncResult ar) {
……
SmsCbHeader header = new SmsCbHeader(receivedPdu, false);
// add by mtk for 4370 ~ 4382
if(header.getServiceCategory() >= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MIN && header.getServiceCategory() <= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MAX)
{
return ;
}
// add by mtk for 4370 ~ 4382
……
}
注意:上述做法只是不接收这些信道的广播消息,但是4370~4382信道仍然是打开的。如果需要关闭这些信道,可以参考第5步。
4、如果是客户预置的信道,请检查NVRAM_EF_CB_DEFAULT_CH_LID和NVRAM_EF_CB_CH_INFO_LID中并去掉。如果是非客户预置的信道,那就是SIM卡中预置的。可以申请打开宏__CB_CHANNEL_ONLY_STORED_IN_NVRAM__,使手机启动时,不去读取SIM卡中保存的信道。这样,这些信道就不会打开了。
目前没有提供支持单独关闭某些广播信道的AT命令。
1. 在SmsCbConstants.java(alps/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm) 中添加宏:
public static final int MESSAGE_ID_CBDD_IDENTIFIER_MIN = 0x1112; // add by mtk for 4370
public static final int MESSAGE_ID_CBDD_IDENTIFIER_MAX = 0x111E; // add by mtk for 4382
2. 在 SmsCbHeader.java(alps/frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm)中添加个判断:
public SmsCbHeader(byte[] pdu, boolean isEtwsPrimary) throws IllegalArgumentException{
……
mMessageIdentifier = ((pdu[2] & 0xff)<<8)| (pdu[3] & 0xff);
// add by mtk for 4370 ~ 4382
if(mMessageIdentifier >= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MIN && mMessageIdentifier <= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MAX )
{
return ;
}
// add by mtk for 4370 ~ 4382
}
3. 在GsmCellBroadcastHandler.java 中对handleGsmBroadcastSms() 方法做如下修改:
private SmsCbMessage handleGsmBroadcastSms(AsyncResult ar) {
……
SmsCbHeader header = new SmsCbHeader(receivedPdu, false);
// add by mtk for 4370 ~ 4382
if(header.getServiceCategory() >= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MIN && header.getServiceCategory() <= SmsCbConstants.MESSAGE_ID_CBDD_IDENTIFIER_MAX)
{
return ;
}
// add by mtk for 4370 ~ 4382
……
}
注意:上述做法只是不接收这些信道的广播消息,但是4370~4382信道仍然是打开的。如果需要关闭这些信道,可以参考第5步。
4、如果是客户预置的信道,请检查NVRAM_EF_CB_DEFAULT_CH_LID和NVRAM_EF_CB_CH_INFO_LID中并去掉。如果是非客户预置的信道,那就是SIM卡中预置的。可以申请打开宏__CB_CHANNEL_ONLY_STORED_IN_NVRAM__,使手机启动时,不去读取SIM卡中保存的信道。这样,这些信道就不会打开了。
目前没有提供支持单独关闭某些广播信道的AT命令。
android 如何屏蔽接收来自某些信道的小区广播消息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。