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

前端技术 2023/09/04 Android
要求设置默认信道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;
}

本文地址:https://www.stayed.cn/item/11265

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。