APP内嵌外链加载的是网址,浏览器也能打开该网址,但涉及到游客登录时后端会判断ajax提交环境是端环境还是web环境,这里需求是游客登录必须在端环境下才可以注册成功。
下列代码是user_age的存取,代码块放在webview初始化附近。
String userAgent = mWebSettings.getUserAgentString();//取出user_age
userAgent += "|" + MainActivity.USER_AGE;//端环境下整合成的字符串
mWebSettings.setUserAgentString(userAgent);//重写user_age
获取设备信息前先定义全局变量 telephonyManager,获取IMEI、ANDROID_ID需要用到
private TelephonyManager telephonyManager;
telephonyManager = (TelephonyManager) this.getSystemService(this.TELEPHONY_SERVICE);
Android获取手机IMEI号
public String getIMEI() {
try {
@SuppressLint("MissingPermission") String imei = telephonyManager.getDeviceId();
if (imei == null) {
imei = " ";
}
return imei;
} catch (Exception e) {
e.printStackTrace();
return " ";
}
}
获取MAC
//Android 6.0 以下获取方式
public String getMacDefault(Context context) {
String mac = " ";
if (context == null) {
return mac;
}
WifiManager wifi = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo info = null;
try {
info = wifi.getConnectionInfo();
} catch (Exception e) {
e.printStackTrace();
}
if (info == null) {
return " ";
}
mac = info.getMacAddress();
if (!TextUtils.isEmpty(mac)) {
mac = mac.toUpperCase(Locale.ENGLISH);
}
return mac;
}
/**
* Android 6.0-Android 7.0 获取mac地址
*/
public String getMacAddress() {
String macSerial = " ";
String str = "";
try {
Process pp = Runtime.getRuntime().exec("cat/sys/class/net/wlan0/address");
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while (null != str) {
str = input.readLine();
if (str != null) {
macSerial = str.trim();//去空格
break;
}
}
} catch (IOException ex) {
// 赋予默认值
ex.printStackTrace();
}
return macSerial;
}
/** Android 7.0及以上获取MAC方式
* 通过网络接口取
* @return
*/
private String getNewMac() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return " ";
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format("%02X:", b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() - 1);
}
return res1.toString();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return " ";
}
mac调用函数前要判断Android版本在调用对应函数,代码如下:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
mac = getMacDefault(this);//Android 6.0以下
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
mac = getMacAddress();//Android 6.0 ~ 7.0
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mac = getNewMac();//Android 7.0 以上
}
获取ANDROID_ID
public String getAndroidId (Context context) {
try { //实例化TelephonyManager对象
String android = Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID);
if (android == null) {
android = " ";
}
return android;
} catch (Exception e) {
e.printStackTrace();
return " ";
}
}
获取联网方式
public int NetType(Context context) {
try {
//这里稍后再讲NetUtil类
int typeName = NetUtil.getNetworkState(context);
return typeName;
} catch (Exception e) {
return 0;
}
}
获取分辨率
DisplayMetrics metrics =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
String Resolving_power = width + "*" + height;
获取操作系统版本号 Build.VERSION.RELEASE
获取运营商 NetUtil.getOperatorType(this); 获取设备型号
Build.MODEL