From: snickersun Date: Tue, 6 Jul 2021 19:08:40 +0000 (+0800) Subject: 添加选择默认apn功能 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=2f3e3015e3f2df3e4f4108cce6ac81795a6ecde7;p=icsupport.git 添加选择默认apn功能 --- diff --git a/app/src/main/java/com/enqualcomm/support/Config.java b/app/src/main/java/com/enqualcomm/support/Config.java index a57ea847..19e7ad52 100644 --- a/app/src/main/java/com/enqualcomm/support/Config.java +++ b/app/src/main/java/com/enqualcomm/support/Config.java @@ -42,6 +42,8 @@ public class Config { //如果重试都失败,则丢弃命令不进行盲点续传 public static boolean discard_cmd_after_retryfailed = true; + public static boolean enableDataRoaming=false; + public static boolean forceMoveCheck = true; public static boolean forceWearCheck = true; @@ -910,6 +912,7 @@ public class Config { noPPGSensor = false; noTempSensor = false; L004_BroadCastActionStrip = true; + enableDataRoaming=true; Config.forceMoveCheck = false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。 } else if (Config.custom_name.equals("l005")) { @@ -931,6 +934,7 @@ public class Config { noPPGSensor = true; noTempSensor = true; L004_BroadCastActionStrip = true; + enableDataRoaming=true; forceMoveCheck = false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。 } else if (custom_name.equals("YQ") || custom_name.equals("YQ_EN")) { ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF, true); diff --git a/app/src/main/java/com/enqualcomm/support/bean/ApnSetting.java b/app/src/main/java/com/enqualcomm/support/bean/ApnSetting.java index 71936ba4..a3320fe1 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/ApnSetting.java +++ b/app/src/main/java/com/enqualcomm/support/bean/ApnSetting.java @@ -1,6 +1,7 @@ package com.enqualcomm.support.bean; public class ApnSetting { + private String mID; private String mNameStr; private String mApnStr; private String mProxyStr; @@ -21,6 +22,8 @@ public class ApnSetting { private String mMvnoTypeStr; private String mMvnoMatchDataStr; public ApnSetting(){} + public String getID(){return mID;} + public void setID(String id){mID=id;} public String getmNameStr() { return mNameStr; } @@ -137,7 +140,7 @@ public class ApnSetting { } @Override public String toString() { - return "ApnSetting [mNameStr=" + mNameStr + ", mApnStr=" + mApnStr + return "ApnSetting [id = "+mID+", mNameStr=" + mNameStr + ", mApnStr=" + mApnStr + ", mProxyStr=" + mProxyStr + ", mPortStr=" + mPortStr + ", mUserStr=" + mUserStr + ", mServerStr=" + mServerStr + ", mPasswordStr=" + mPasswordStr + ", mMmscStr=" + mMmscStr @@ -153,7 +156,7 @@ public class ApnSetting { public String toShortString() { - return "APNSettings name = " +mNameStr+ + return "APNSettings id = "+mID+" ,name = " +mNameStr+ " ,mcc="+mMccStr+ " ,mnc="+mMncStr+ " ,apn="+mApnStr+ diff --git a/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java b/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java index 3b91b873..2ed39a49 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/APNUtil.java @@ -5,13 +5,47 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; +import android.provider.Telephony; +import android.sim.Sim; import android.telephony.TelephonyManager; +import android.util.Log; import android.widget.Toast; +import com.android.internal.telephony.Phone; +import com.android.internal.telephony.PhoneFactory; import com.enqualcomm.support.bean.ApnSetting; +import android.sim.SimManager; + +import java.lang.reflect.Method; public class APNUtil { + private static Phone mPhone=null; + public static void enableRoaming(Context context,boolean roaming) { + + String phoneFactoryName = "com.android.internal.telephony.PhoneFactory"; + String phoneName = "com.android.internal.telephony.Phone"; + try { + Class phoneFactoryClass = null; + phoneFactoryClass = Class.forName(phoneFactoryName); + Class phoneClass = Class.forName(phoneName); + // Get the default phone + if (mPhone == null) { + // Do the best we can + Method getDefaultPhone = phoneFactoryClass.getMethod("getDefaultPhone"); + Object phoneObject = getDefaultPhone.invoke(null); + + mPhone = (Phone)phoneObject; + } + ICLogger.d("updatePhone:- isRoaming =" + mPhone.getDataRoamingEnabled() +" to " +roaming); + mPhone.setDataRoamingEnabled(roaming); + } catch (Exception e) { + ICLogger.e(e.getMessage(),e); + } + + } + + public static String getCurrentAPN(Context context){ String APNSTR=""; APNSTR=ApnEditor.getApnEditorInstance(context).getCurrentAPN(); @@ -38,6 +72,21 @@ public class APNUtil { } } + /*** + * APNUtil.getCurrentAPN(this); + * APNUtil.selectAPN("240","07","NXT17.NET",this); + * @param mcc + * @param mnc + * @param apn + * @param context + * @return + */ + public static boolean selectAPN(String mcc,String mnc,String apn,Context context) { + ApnEditor apnEditor=new ApnEditor(context); + apnEditor.setDefaultAPN(apn,mcc+mnc); + + return true; + } public static boolean checkAPN(String mcc,String mnc,String apn,Context context) { // 检查系统已经写入的APN String found=""; diff --git a/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java b/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java index 40610e91..1db6ff0b 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ApnEditor.java @@ -18,6 +18,7 @@ package com.enqualcomm.support.utils; import android.app.AlertDialog; import android.app.Dialog; +import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; @@ -78,7 +79,7 @@ public class ApnEditor { private final static String CURRENT_CARRIER = "ro.operator"; public final static String SPECIAL_CTCC_NUMERIC = "20404"; public final static String CTCC_ICCID = "898603,898611"; - + private String mID; private static String sNotSet; private String mName; private String mApn; @@ -227,7 +228,82 @@ public class ApnEditor { } - public String queryApn(String apn,String mccmnc){ + public void setSelectedApnKey(String key) { + //s mSelectedKey = key; + ContentResolver resolver = mContext.getContentResolver(); + + ContentValues values = new ContentValues(); + /* SPRD: for multi-sim @{ */ + // values.put(APN_ID, mSelectedKey); + // resolver.update(PREFERAPN_URI, values, null, null); + values.put("apn_id", key); + resolver.update( + Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), + values, null, null); + /* @} */ + } + + public String getSelectedApnKey() { + String key = null; + + /* SPRD: for multi-sim @{ */ + // Cursor cursor = getContentResolver().query(PREFERAPN_URI, new + // String[] {"_id"}, + // null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + Cursor cursor = mContext.getContentResolver().query( + Telephony.Carriers.getContentUri(0, Telephony.Carriers.PATH_PREFERAPN), + new String[] { + "_id" + }, + null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + /* @} */ + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + key = cursor.getString(0); + } + cursor.close(); + ICLogger.d(" get default apnkey "+key); + return key; + } + public void setDefaultAPN(String apn, String mccmnc){ + String apnid=queryApnID(apn,mccmnc); + String currentapnid=apnEditor.getSelectedApnKey(); + ICLogger.d("current APN key "+apnid +" selected APN key " + currentapnid); + setSelectedApnKey(apnid); + currentapnid=apnEditor.getSelectedApnKey(); + ICLogger.d("after set APN key "+apnid +" selected APN key " + currentapnid); + + + } + public String queryApnID(String apn,String mccmnc) { + + String where; + where = "numeric=\"" + mccmnc + "\""; + where += " and name!='CMCC DM'"; + where += " and apn='"+apn+"'"; + + Log.d(TAG,"where = " + where + ",mccmnc =" + mccmnc); + mCursor = mContext.getContentResolver().query(mAPNUri, sProjection, where, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + String apnsetings=""; + if (mCursor.moveToFirst()) { + + fill_apnSettings(mCursor,mApnSetting); + apnsetings+= mApnSetting.toShortString(); + while (mCursor.moveToNext()){ + apnsetings+=";"; + fill_apnSettings(mCursor,mApnSetting); + apnsetings+= mApnSetting.toShortString(); + } + } + if (mCursor != null) { + mCursor.close(); + mCursor = null; + } + ICLogger.d("get APN "+apnsetings); + return mApnSetting.getID(); + } + + public String queryApn(String apn,String mccmnc){ String where; where = "numeric=\"" + mccmnc + "\""; where += " and name!='CMCC DM'"; @@ -374,7 +450,6 @@ public class ApnEditor { - private boolean getApnEditable(Cursor cursor) { String version = SystemProperties.get(CURRENT_CARRIER, "default"); if ("vodafone".equalsIgnoreCase(version) || @@ -391,7 +466,7 @@ public class ApnEditor { // SPRD: for bug 348288: while Cursor is null, return // mFirstTime = false; - + mID = (cursor.getString(ID_INDEX)); mName = (cursor.getString(NAME_INDEX)); mApn = (cursor.getString(APN_INDEX)); mProxy = (cursor.getString(PROXY_INDEX)); @@ -480,6 +555,7 @@ public class ApnEditor { } //mApnSetting + apnSetting.setID(checkNull(mID)); apnSetting.setmNameStr(checkNull(mName)); apnSetting.setmApnStr(checkNull(mApn)); apnSetting.setmProxyStr(checkNull(mProxy));