android 如何设置小区广播默认信道 主要是印度市场
10426 点击·0 回帖
![]() | ![]() | |
![]() | 要求设置默认信道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; } | |
![]() | ![]() |