要求设置默认信道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)
{
((Gemin
iphone)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;
}