1. WebView获取及设置用户代理userAgent 2.获取运营商信息 3.屏幕尺寸与密度 4.获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类 5.判断手机连接的网络类型是WIFI还是2G/3G/4G

1. WebView获取及设置用户代理userAgent


一、获取userAgent:

WebView webView = new WebView(getApplicationContext());
// 得到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卡是哪个运营商

[java] view plain copy
  1. public int getSimOperatorInfo()  
  2. {  
  3.     TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);  
  4.     String operatorString = telephonyManager.getSimOperator();  
  5.       
  6.     if(operatorString == null)  
  7.     {  
  8.         return 0;  
  9.     }  
  10.       
  11.     if(operatorString.equals("46000") || operatorString.equals("46002"))  
  12.     {  
  13.         //中国移动  
  14.         return 1;  
  15.     }  
  16.     else if(operatorString.equals("46001"))  
  17.     {  
  18.         //中国联通  
  19.         return 2;  
  20.     }  
  21.     else if(operatorString.equals("46003"))  
  22.     {  
  23.         //中国电信  
  24.         return 3;  
  25.     }  
  26.       
  27.     //error  
  28.     return 0;  
  29. }  

在onCreate函数中调用下面的函数设定运营商
[java] view plain copy
  1. void SetCarrierOperation()  
  2.         {  
  3.             int simCode = GetSimOperatorInfo();  
  4.             switch(simCode)  
  5.             {  
  6.             case 0:  
  7.                 carrierOperator = CARRIEROPERATOR.NONE;  
  8.                 break;  
  9.             case 1:  
  10.                 carrierOperator = CARRIEROPERATOR.MM;  
  11.                 break;  
  12.             case 2:  
  13.                 carrierOperator = CARRIEROPERATOR.UNIPAY;  
  14.                 break;  
  15.             case 3:  
  16.                 carrierOperator = CARRIEROPERATOR.EGAME;  
  17.                 break;  
  18.             default:  
  19.                 Log.e("unity","SetCarrierOperation error");  
  20.                 break;  
  21.             }  
  22.         } 


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类

[java] view plain copy
  1. /** 
  2.  * 系统工具类 
  3.  * Created by zhuwentao on 2016-07-18. 
  4.  */  
  5. public class SystemUtil {  
  6.   
  7.     /** 
  8.      * 获取当前手机系统语言。 
  9.      * 
  10.      * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” 
  11.      */  
  12.     public static String getSystemLanguage() {  
  13.         return Locale.getDefault().getLanguage();  
  14.     }  
  15.   
  16.     /** 
  17.      * 获取当前系统上的语言列表(Locale列表) 
  18.      * 
  19.      * @return  语言列表 
  20.      */  
  21.     public static Locale[] getSystemLanguageList() {  
  22.         return Locale.getAvailableLocales();  
  23.     }  
  24.   
  25.     /** 
  26.      * 获取当前手机系统版本号 
  27.      * 
  28.      * @return  系统版本号 
  29.      */  
  30.     public static String getSystemVersion() {  
  31.         return android.os.Build.VERSION.RELEASE;  
  32.     }  
  33.   
  34.     /** 
  35.      * 获取手机型号 
  36.      * 
  37.      * @return  手机型号 
  38.      */  
  39.     public static String getSystemModel() {  
  40.         return android.os.Build.MODEL;  
  41.     }  
  42.   
  43.     /** 
  44.      * 获取手机厂商 
  45.      * 
  46.      * @return  手机厂商 
  47.      */  
  48.     public static String getDeviceBrand() {  
  49.         return android.os.Build.BRAND;  
  50.     }  
  51.   
  52.     /** 
  53.      * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限) 
  54.      * 
  55.      * @return  手机IMEI 
  56.      */  
  57.     public static String getIMEI(Context ctx) {  
  58.         TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);  
  59.         if (tm != null) {  
  60.             return tm.getDeviceId();  
  61.         }  
  62.         return null;  
  63.     }  
  64. }  

其中获取手机IMEI需要在AndroidManifest.xml中加上权限:
[html] view plain copy
  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />  

使用这些方法的时候直接调用就好了
[java] view plain copy
  1. private void showSystemParameter() {  
  2.     String TAG = "系统参数:";  
  3.     Log.e(TAG, "手机厂商:" + SystemUtil.getDeviceBrand());  
  4.     Log.e(TAG, "手机型号:" + SystemUtil.getSystemModel());  
  5.     Log.e(TAG, "手机当前系统语言:" + SystemUtil.getSystemLanguage());  
  6.     Log.e(TAG, "Android系统版本号:" + SystemUtil.getSystemVersion());  
  7.     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;
    }

猜你喜欢

转载自blog.csdn.net/tanghongchang123/article/details/80083679