1. WebView获取及设置用户代理userAgent
一、获取userAgent:
// 得到WebSettings对象
WebSettings settings = webView.getSettings();
// 设置支持JavaScript
settings.setJavaScriptEnabled(true);
// 获取到UA
String oldUA= settings.getUserAgentString();
注:
获取userAgent:Mozilla/5.0 (Linux; Android 7.0.0; HUAWEI-AL100 Build/tt) AppleWebKit/648.72 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36
二、设置userAgent:
//拼装UA,根据各自需要
String newUA = String.format("%s crfapp/(%s)",oldUA,"android;43");
//更新UA
settings.setUserAgentString(newUA );
//其余参数设置
settings.setBuiltInZoomControls(true);
settings.setAppCacheEnabled(true);
......
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebClient());
webView.loadUrl(h5Url);
2.获取运营商信息
以下是获取sim卡是哪个运营商
- public int getSimOperatorInfo()
- {
- TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
- String operatorString = telephonyManager.getSimOperator();
- if(operatorString == null)
- {
- return 0;
- }
- if(operatorString.equals("46000") || operatorString.equals("46002"))
- {
- //中国移动
- return 1;
- }
- else if(operatorString.equals("46001"))
- {
- //中国联通
- return 2;
- }
- else if(operatorString.equals("46003"))
- {
- //中国电信
- return 3;
- }
- //error
- return 0;
- }
在onCreate函数中调用下面的函数设定运营商
- void SetCarrierOperation()
- {
- int simCode = GetSimOperatorInfo();
- switch(simCode)
- {
- case 0:
- carrierOperator = CARRIEROPERATOR.NONE;
- break;
- case 1:
- carrierOperator = CARRIEROPERATOR.MM;
- break;
- case 2:
- carrierOperator = CARRIEROPERATOR.UNIPAY;
- break;
- case 3:
- carrierOperator = CARRIEROPERATOR.EGAME;
- break;
- default:
- Log.e("unity","SetCarrierOperation error");
- break;
- }
- }
3.屏幕尺寸与密度
在一个Activity的onCreate方法中,写入如下代码:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
4.获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类
1、获取手机制造厂商
2、获取手机型号
3、获取手机系统当前使用的语言
4、获取Android系统版本号
5、获取手机IMEI串号
6、获取手机中的语言列表
SystemUtil类
- /**
- * 系统工具类
- * Created by zhuwentao on 2016-07-18.
- */
- public class SystemUtil {
- /**
- * 获取当前手机系统语言。
- *
- * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
- */
- public static String getSystemLanguage() {
- return Locale.getDefault().getLanguage();
- }
- /**
- * 获取当前系统上的语言列表(Locale列表)
- *
- * @return 语言列表
- */
- public static Locale[] getSystemLanguageList() {
- return Locale.getAvailableLocales();
- }
- /**
- * 获取当前手机系统版本号
- *
- * @return 系统版本号
- */
- public static String getSystemVersion() {
- return android.os.Build.VERSION.RELEASE;
- }
- /**
- * 获取手机型号
- *
- * @return 手机型号
- */
- public static String getSystemModel() {
- return android.os.Build.MODEL;
- }
- /**
- * 获取手机厂商
- *
- * @return 手机厂商
- */
- public static String getDeviceBrand() {
- return android.os.Build.BRAND;
- }
- /**
- * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
- *
- * @return 手机IMEI
- */
- public static String getIMEI(Context ctx) {
- TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
- if (tm != null) {
- return tm.getDeviceId();
- }
- return null;
- }
- }
其中获取手机IMEI需要在AndroidManifest.xml中加上权限:
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
使用这些方法的时候直接调用就好了
- private void showSystemParameter() {
- String TAG = "系统参数:";
- Log.e(TAG, "手机厂商:" + SystemUtil.getDeviceBrand());
- Log.e(TAG, "手机型号:" + SystemUtil.getSystemModel());
- Log.e(TAG, "手机当前系统语言:" + SystemUtil.getSystemLanguage());
- Log.e(TAG, "Android系统版本号:" + SystemUtil.getSystemVersion());
- Log.e(TAG, "手机IMEI:" + SystemUtil.getIMEI(getApplicationContext()));
- }
5.判断手机连接的网络类型是WIFI还是2G/3G/4G
首先定义不同网络类型返回的常量值:
public class Constants {
/**
* Unknown network class
*/
public static final int NETWORK_CLASS_UNKNOWN = 0;
/**
* wifi net work
*/
public static final int NETWORK_WIFI = 1;
/**
* "2G" networks
*/
public static final int NETWORK_CLASS_2_G = 2;
/**
* "3G" networks
*/
public static final int NETWORK_CLASS_3_G = 3;
/**
* "4G" networks
*/
public static final int NETWORK_CLASS_4_G = 4;
获取手机网络类型(2G/3G/4G):
4G为LTE,联通的3G为UMTS或HSDPA,电信的3G为EVDO,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA。
public static int getNetWorkClass(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
switch (telephonyManager.getNetworkType()) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return Constants.NETWORK_CLASS_2_G;
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return Constants.NETWORK_CLASS_3_G;
case TelephonyManager.NETWORK_TYPE_LTE:
return Constants.NETWORK_CLASS_4_G;
default:
return Constants.NETWORK_CLASS_UNKNOWN;
}
}
获取手机连接的网络类型(是WIFI还是手机网络[2G/3G/4G]):
public static int getNetWorkStatus(Context context) {
int netWorkType = Constants.NETWORK_CLASS_UNKNOWN;
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
int type = networkInfo.getType();
if (type == ConnectivityManager.TYPE_WIFI) {
netWorkType = Constants.NETWORK_WIFI;
} else if (type == ConnectivityManager.TYPE_MOBILE) {
netWorkType = getNetWorkClass(context);
}
}
return netWorkType;
}