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

本文介绍如何在工程模式下使用暗骂指令*983*123#来重启双卡手机的SIM卡数据网络连接,适用于展讯和MTK平台。详细步骤包括在特定Java类中添加代码实现,通过判断输入指令并调用相关API操作来关闭和重新开启数据连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


工程模式下,输入暗骂“*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();





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值