首页 > 系统 > Android > 正文

android如何设置小区广播默认信道(50与60并支持双卡)

2019-10-24 20:58:41
字体:
来源:转载
供稿:网友
置小区广播默认信道50与60,并支持双卡主要是印度市场,具体的实现如下,感兴趣的朋友可以参考下哈
 
要求设置默认信道50与60,并支持双卡。 

在PhoneApp.java文件中增加code: 

在文件开头部分import 包: 
复制代码代码如下:

import android.provider.Telephony; 
import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 
import android.content.ContentValues; 
import android.database.Cursor; 

2.在文件开头部分增加变量: 
复制代码代码如下:

private final BroadcastReceiver mSmsReadyReceiver = new SmsReadyBroadcastReceiver(); 
private static final int MESSAGE_SET_STATE = 33; 
private static final int MESSAGE_SET_CONFIG = 32; 
private static final String KEYID = "_id"; 
private static final String NAME = "name"; 
private static final String NUMBER = "number"; 
private static final String ENABLE = "enable"; 
private static final Uri CHANNEL_URI = Uri.parse("content://cb/channel"); 
private static final Uri CHANNEL_URI1 = Uri.parse("content://cb/channel1"); 

3.在mHandeler中增加Case: 
复制代码代码如下:

case MESSAGE_SET_STATE: 
handleSetStateResponse(msg); 
break; 

4.在oncreate函数中注册cellbroadcastRecivier: 
复制代码代码如下:

IntentFilter smsReadyIntentFilter = new IntentFilter("android.provider.Telephony.SMS_STATE_CHANGED"); 
registerReceiver(mSmsReadyReceiver,smsReadyIntentFilter); 

5.在类中增加函数: 
复制代码代码如下:

private class SmsReadyBroadcastReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent){ 
Log.e("kpp","Sms Ready!!"); 
String action = intent.getAction(); 
Log.e("kpp","Sms Ready action ="+action); 
if (action.equals("android.provider.Telephony.SMS_STATE_CHANGED")) { 
int extra = intent.getIntExtra("simId",0); 
boolean isReady = intent.getBooleanExtra("ready",false); 
Log.e("kpp","Sms Ready extra ="+extra); 
Log.e("kpp","Sms Ready isReady ="+isReady); 
if(!isReady){ 
return; 

Message msg; 
msg = mHandler.obtainMessage(MESSAGE_SET_STATE, extra, MESSAGE_SET_STATE,null); 

if (FeatureOption.MTK_GEMINI_SUPPORT == true) 

((GeminiPhone)phone).activateCellBroadcastSmsGemini(0,msg, extra); 

else 

phone.activateCellBroadcastSms(0,msg); 






private void handleSetStateResponse(Message msg) { 
int simId = msg.arg1; 
if (msg.arg2 == MESSAGE_SET_STATE) { 
AsyncResult ar = (AsyncResult) msg.obj; 
if (ar == null) { 
Log.i(LOG_TAG, "handleSetStateResponse,ar is null"); 
return; 

if (ar.exception != null) { 
if (DBG) 
Log.d(LOG_TAG, "handleSetStateResponse: ar.exception="+ ar.exception); 
} else { 
Log.i(LOG_TAG, "handleSetStateResponse: re get ok"); 
addCustomChanneltoList(PhoneConstants.GEMINI_SIM_1,"Channel1",50); 
addCustomChanneltoList(PhoneConstants.GEMINI_SIM_1,"Channel2",60); 
addCustomChanneltoList(PhoneConstants.GEMINI_SIM_2,"Channel1",50); 
addCustomChanneltoList(PhoneConstants.GEMINI_SIM_2,"Channel2",60); 




private void addCustomChanneltoList(int mSimId,String channelName,int channelNum){ 
Log.d(LOG_TAG, "addCustomChanneltoList: mSimId=" + mSimId 
+ ", channelName= " + channelName + ", channelNum= " + channelNum); 
if(queryChannelFromDatabase(mSimId,channelName,channelNum)){ 
SmsBroadcastConfigInfo[] objectList = new SmsBroadcastConfigInfo[1]; 
objectList[0] = new SmsBroadcastConfigInfo(channelNum,channelNum, -1, -1, true); 
Message msg1 = mHandler.obtainMessage(MESSAGE_SET_CONFIG, 0,MESSAGE_SET_CONFIG, null); 
if (FeatureOption.MTK_GEMINI_SUPPORT == true) 

((GeminiPhone)phone).setCellBroadcastSmsConfigGemini(objectList, objectList, msg1, mSimId); 


else 

phone.setCellBroadcastSmsConfig(objectList, objectList, msg1); 




private boolean queryChannelFromDatabase(int mSimId,String channelName,int channelNum){ 
// ClearChannel(); 
Log.d(LOG_TAG, "queryChannelFromDatabase: mSimId=" + mSimId 
+ ", channelName= " + channelName + ", channelNum= " + channelNum); 
String[] projection = new String[] { KEYID, NAME, NUMBER, ENABLE }; 
String SELECTION = "(" + NUMBER + " = " + channelNum + ")"; 
Cursor cursor = null; 
if(mSimId==PhoneConstants.GEMINI_SIM_1){ 
cursor = this.getContentResolver().query(CHANNEL_URI,projection, SELECTION, null, null); 
}else if(mSimId==PhoneConstants.GEMINI_SIM_2){ 
cursor = this.getContentResolver().query(CHANNEL_URI1,projection, SELECTION, null, null); 


if (cursor.getCount() == 0){ 
ContentValues values = new ContentValues(); 
values.put(NAME,channelName); 
values.put(NUMBER, channelNum); 
values.put(ENABLE, true); 
try { 
if(mSimId==PhoneConstants.GEMINI_SIM_1){ 
this.getContentResolver().insert(CHANNEL_URI, values); 
}else if(mSimId==PhoneConstants.GEMINI_SIM_2){ 
this.getContentResolver().insert(CHANNEL_URI1, values); 

} catch (Exception e){ 
return false; 


cursor.close(); 
return true; 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表