Android 4.4
ConnectivityManager mConnService; TelephonyManager.setDefaultDataPhoneId(context, phoneId); mConnService.setMobileDataEnabledByPhoneId(phoneId, true);
Android 7之后
private static void setDefaultDataSubId(Context context, int subId) { SubscriptionManager.from(context).setDefaultDataSubId(subId); } SubscriptionManager.from(context).setDefaultSmsSubId(subId); SubscriptionManager.getDefaultDataSubscriptionId() mSubscriptionManager.addOnSubscriptionsChangedListener(this.mOnSubscriptionsChangeListener);
https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/SubscriptionManager.java
/** * Set the subscription which will be used by default for data, with the subscription which * the supplied subscription ID corresponds to; or throw a RuntimeException if the supplied * subscription ID is not usable (check with {@link #isUsableSubscriptionId(int)}). * * @param subscriptionId the supplied subscription ID * * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int subscriptionId) { if (VDBG) logd("setDataSubscription sub id = " + subscriptionId); try { ISub iSub = TelephonyManager.getSubscriptionService(); if (iSub != null) { iSub.setDefaultDataSubId(subscriptionId); } } catch (RemoteException ex) { // ignore it } }
小米
miui.telephony.SubscriptionManager
SubscriptionManager.getDefault().setDefaultDataSlotId(slot_id);
摩托
com.motorola.msimsettings.utils.SmartSimUtils
public static int setSimForDataWithStatusToast(Context context, int arg3) { int result = SmartSimUtils.setSimForData(context, arg3); Toast.makeText(context, SmartSimUtils.mapDDSSwitchStatusToMessageResId(result), 1).show(); // 切换可能需要1分钟 SmartSimUtils.notifyDdsAssistantSlotChanged(context); return result; } public int setDefaultDataSubIdWithNwAutoSwitch(int arg1) { return this.mManager.setDefaultDataSubIdWithNwAutoSwitch(arg1); } public MotoExtTelephonyManagerAdapter(Context arg2) { this.mManager = new MotoExtTelephonyManager(arg2); }
com.motorola.android.telephony.MotoExtTelephonyManager
private IMotoExtTelephony getIMotoExtTelephony() { return com.motorola.android.internal.telephony.IMotoExtTelephony.Stub.asInterface(ServiceManager.getService("motoexttelephony")); } public int setDefaultDataSubIdWithNwAutoSwitch(int ddsSubId) { try { IMotoExtTelephony motoExtTelephony = this.getIMotoExtTelephony(); if(motoExtTelephony == null) { this.loge("moto ext telephony is null"); return -1; } return motoExtTelephony.setDefaultDataSubIdWithNwAutoSwitch(ddsSubId); } catch(RemoteException | NullPointerException ex) { return -1; } }