广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-08 09:04:38 次阅读 稿源:互联网
    广告
    要求设置默认信道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;
    }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告