手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android如何设置小区广播默认信道(50与60并支持双卡)
android如何设置小区广播默认信道(50与60并支持双卡)
摘要:要求设置默认信道50与60,并支持双卡。在PhoneApp.java文件中增加code:在文件开头部分import包:复制代码代码如下:im...

要求设置默认信道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;

}

【android如何设置小区广播默认信道(50与60并支持双卡)】相关文章:

Android编程设置全屏的方法实例

Android如何实现非本地图片的点击态

android IPC之binder通信机制

Android安卓中循环录像并检测内存卡容量

android预置默认的语音信箱号码具体实现

android 开发教程之日历项目实践(一)

android获取屏幕像素思路及代码

android USB如何修改VID具体实现

android底部菜单栏实现原理与代码

android 微信 sdk api调用不成功解决方案

精品推荐
分类导航