您的位置:首页 > 理论基础 > 计算机网络

【展讯】关于卡的数据网络连接

2014-12-31 14:47 225 查看
工程模式下,输入暗骂“*983*123#”后,重启手机sim卡的数据网络连接(双卡单通)

展讯平台:

packages\apps\Dialer\src\com\android\dialer\SpecialCharSequenceMgr.java中添加。

///ZTE SR-ENGINEERMODE-0690 网络重启 restart network data - add begin
    private static final String MMI_RESTART_NETWORKDATA_DISPLAY = "*983*123#";
static boolean handleRestartNetworkDataDisplay(Context context, String input, boolean useSystemWindow) {
android.util.Log.d("zdqddd", "SpecialCharSequenceMgr.java-->handleRestartNetworkDataDisplay()==input="+input);
if(input.equals(MMI_RESTART_NETWORKDATA_DISPLAY)) {
restartNetworkDataDisplay(context, useSystemWindow);
return true;
}
return false;
}

static void restartNetworkDataDisplay(Context context, boolean useSystemWindow) {
final int simId = Settings.System.getInt(context.getContentResolver(),
Settings.System.MULTI_SIM_DATA_CALL, SprdPhoneSupport.getDefaultPhoneId());
android.util.Log.d("zdqddd", "SpecialCharSequenceMgr.java-->restartNetworkDataDisplay()==start==");
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] simId="+simId);
int phoneId = TelephonyManager.getDefaultDataPhoneId(context);
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] phoneId="+phoneId);
final ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final SimManager mSimManager = SimManager.get(context);
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] SimManager="+mSimManager);
new AsyncTask<Void, Void, Boolean>() {

@Override
protected Boolean doInBackground(Void... arg0) {
// TODO Auto-generated method stub
//如果数据连接是打开的,则先关闭
boolean enabled = cm.getMobileDataEnabledByPhoneId(simId);
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] enabled="+enabled);
if(enabled) {
cm.setMobileDataEnabledByPhoneId(simId, false);
}
/*if(simId >= 0) {
cm.setMobileDataEnabled(false);
}*/
return null;
}

@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
if(TelephonyManager.isMultiSim()) {//双卡
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] double ==================");
//数据连接一开始是打开的,关闭后,再打开相应的卡槽sim卡的数据连接
/*
if(mSimManager == null) {
return;
}
Sim mSims[] = mSimManager.getSims();//卡信息
int simLen = mSims.length;
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] simLen="+simLen);
for(int i=0;i<simLen;i++) {
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] mSims["+i+"]="+mSims[i]);
}
*/
cm.setMobileDataEnabledByPhoneId(simId, true);

} else {//打开
android.util.Log.d("zdqddd", "[restartNetworkDataDisplay] single ==================");
cm.setMobileDataEnabled(true);
}
super.onPostExecute(result);
}

}.execute();
android.util.Log.d("zdqddd", "SpecialCharSequenceMgr.java-->restartNetworkDataDisplay()==end==");
}
///ZTE SR-ENGINEERMODE-0690 restart network data -zhengdongqin add end

相关类:android.sim.Sim; android.sim.SimManager; android.telephony.TelephonyManager; android.telephony.SprdPhoneSupport; android.net.ConnectivityManager;

MTK平台KK:

import android.os.AsyncTask;
import android.provider.Telephony.SIMInfo;
import android.net.ConnectivityManager;
import com.mediatek.common.featureoption.FeatureOption;

// kk版本,simId是从1开始累加的,如先插入移动卡,然后拔掉在插入联通卡,则移动卡的simId是1
// 联通卡的simId是2,如果再插入另外一张sim卡,则simId是3
final long simId = Settings.System.getLong(SoundRecorder.this.getContentResolver(),
Settings.System.GPRS_CONNECTION_SIM_SETTING, Settings.System.DEFAULT_SIM_NOT_SET);
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... arg0) {
// TODO Auto-generated method stub
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// 若数据连接是打开的,则先关闭
if(simId > 0) { //如果数据连接关闭,则Settings.System.DEFAULT_SIM_NOT_SET值为-1
cm.setMobileDataEnabled(false);
}
return null;
}
@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if(FeatureOption.MTK_GEMINI_SUPPORT) { // 双卡
// 若数据连接一开始是打开的,关闭后,再打开相应的卡槽sim卡
if(simId > 0) {
SIMInfo simInfo = SIMInfo.getSIMInfoById(SoundRecorder.this, simId);
if(simInfo != null){
int slotId = simInfo.mSlot;
boolean isEnable = cm.getMobileDataEnabledGemini(slotId);
android.util.Log.d("yangjunddd", "isEnable =" + isEnable);
cm.setMobileDataEnabledGemini(slotId);
}
} else { // 若数据连接是关闭的,则打开卡槽1的sim卡
cm.setMobileDataEnabled(true);
					}
} else {// 单卡
cm.setMobileDataEnabled(true);
}
<span style="white-space:pre">				</span>super.onPostExecute(result);
}.execute();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: