灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:7930回复:0

android 如何设置小区广播默认信道 主要是印度市场

楼主#
更多 发布于:2013-05-12 13:01
要求设置默认信道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;
                   }

喜欢0 评分0
游客

返回顶部