上报sim卡信息时增加ip信息
parent
9ac679dfcb
commit
c4dd885bc0
@ -1,42 +0,0 @@
|
|||||||
package com.xypower.common;
|
|
||||||
|
|
||||||
import android.text.TextUtils;
|
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
public class InetAddressUtils {
|
|
||||||
// String regex = "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$";
|
|
||||||
private static final Pattern IPV4_PATTERN = Pattern.compile("^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
|
|
||||||
|
|
||||||
private static final Pattern IPV6_STD_PATTERN = Pattern.compile("^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
|
|
||||||
|
|
||||||
private static final Pattern IPV6_HEX_COMPRESSED_PATTERN = Pattern.compile("^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$");
|
|
||||||
|
|
||||||
public static boolean isIPv4Address(final String input) {
|
|
||||||
if (TextUtils.isEmpty(input)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return IPV4_PATTERN.matcher(input).matches();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isIPv6StdAddress(final String input) {
|
|
||||||
if (TextUtils.isEmpty(input)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return IPV6_STD_PATTERN.matcher(input).matches();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isIPv6HexCompressedAddress(final String input) {
|
|
||||||
if (TextUtils.isEmpty(input)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return IPV6_HEX_COMPRESSED_PATTERN.matcher(input).matches();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isIPv6Address(final String input) {
|
|
||||||
if (TextUtils.isEmpty(input)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return isIPv6StdAddress(input) || isIPv6HexCompressedAddress(input);
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,167 @@
|
|||||||
|
package com.xypower.common;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.ContentResolver;
|
||||||
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.NetworkInfo;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import java.net.Inet4Address;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class NetworkUtils {
|
||||||
|
// String regex = "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$";
|
||||||
|
private static final Pattern IPV4_PATTERN = Pattern.compile("^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
|
||||||
|
|
||||||
|
private static final Pattern IPV6_STD_PATTERN = Pattern.compile("^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
|
||||||
|
|
||||||
|
private static final Pattern IPV6_HEX_COMPRESSED_PATTERN = Pattern.compile("^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$");
|
||||||
|
|
||||||
|
public static boolean isIPv4Address(final String input) {
|
||||||
|
if (TextUtils.isEmpty(input)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return IPV4_PATTERN.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIPv6StdAddress(final String input) {
|
||||||
|
if (TextUtils.isEmpty(input)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return IPV6_STD_PATTERN.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIPv6HexCompressedAddress(final String input) {
|
||||||
|
if (TextUtils.isEmpty(input)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return IPV6_HEX_COMPRESSED_PATTERN.matcher(input).matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIPv6Address(final String input) {
|
||||||
|
if (TextUtils.isEmpty(input)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isIPv6StdAddress(input) || isIPv6HexCompressedAddress(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMobileNetworkIp(Context context) {
|
||||||
|
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
@SuppressLint("MissingPermission") NetworkInfo[] networkInfos = connectivityManager.getAllNetworkInfo();
|
||||||
|
|
||||||
|
if (networkInfos == null || networkInfos.length == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (NetworkInfo networkInfo : networkInfos) {
|
||||||
|
if (networkInfo == null || networkInfo.getType() != ConnectivityManager.TYPE_MOBILE || !networkInfo.isConnected()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
|
||||||
|
NetworkInterface intf = en.nextElement();
|
||||||
|
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
|
||||||
|
InetAddress inetAddress = enumIpAddr.nextElement();
|
||||||
|
if (inetAddress.isLoopbackAddress()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (inetAddress instanceof Inet4Address) {
|
||||||
|
return inetAddress.getHostAddress();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int addAPN(Context context, String name, String desc, String numeric, String user, String pwd) {
|
||||||
|
int id = -1;
|
||||||
|
String NUMERIC = getSIMInfo(context);
|
||||||
|
if (NUMERIC == null) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
Uri APN_URI = null;
|
||||||
|
try {
|
||||||
|
APN_URI = Uri.parse("content://telephony/carriers");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentResolver resolver = context.getContentResolver();
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put("name", desc); //apn description
|
||||||
|
values.put("apn", name);
|
||||||
|
values.put("type", "default"); //apn Type
|
||||||
|
values.put("numeric", numeric);
|
||||||
|
values.put("mcc", numeric.substring(0, 3));
|
||||||
|
values.put("mnc", numeric.substring(3, numeric.length()));
|
||||||
|
values.put("proxy", "");
|
||||||
|
values.put("port", "");
|
||||||
|
values.put("mmsproxy", "");
|
||||||
|
values.put("mmsport", "");
|
||||||
|
values.put("user", user);
|
||||||
|
values.put("server", ""); //服务器
|
||||||
|
values.put("password", pwd); //密码
|
||||||
|
values.put("mmsc", ""); //MMSC
|
||||||
|
Cursor c = null;
|
||||||
|
Uri newRow = resolver.insert(APN_URI, values);
|
||||||
|
if (newRow != null) {
|
||||||
|
c = resolver.query(newRow, null, null, null, null);
|
||||||
|
int idIndex = c.getColumnIndex("_id");
|
||||||
|
c.moveToFirst();
|
||||||
|
id = c.getShort(idIndex);
|
||||||
|
}
|
||||||
|
if (c != null)
|
||||||
|
c.close();
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static String getSIMInfo(Context context) {
|
||||||
|
TelephonyManager iPhoneManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
|
return iPhoneManager.getSimOperator();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置接入点
|
||||||
|
public static void SetAPN(Context context, int id) {
|
||||||
|
Uri CURRENT_APN_URI = null;
|
||||||
|
try {
|
||||||
|
CURRENT_APN_URI = Uri.parse("content://telephony/carriers");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
ContentResolver resolver = context.getContentResolver();
|
||||||
|
ContentValues values = new ContentValues();
|
||||||
|
values.put("apn_id", id);
|
||||||
|
resolver.update(CURRENT_APN_URI, values, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
public static void checkAPN(Context context) {
|
||||||
|
// 检查当前连接的APN
|
||||||
|
Cursor cr = context.getContentResolver().query(APN_URI, null, null, null, null);
|
||||||
|
while (cr != null && cr.moveToNext()) {
|
||||||
|
if(cr.getString(cr.getColumnIndex("apn")).equals("abc")){
|
||||||
|
APN.hasAPN=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue