android小区广播,android如何设置小区广播默认信道(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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值