Android 获取手机及APP信息实例详解

    霜风渐紧寒侵被,听孤雁声嘹唳,一声声送一声悲。《御街行》中的这句诗用来形容这个季节的北京真是再合适不过了,霜风阵阵,跑步的时候也越来越舍不得脱去外套了,考验毅力的时刻到了!

    言归正传,开发Android手机APP时,经常需要获取手机的相关信息,比如系统版本号、屏幕分辨率和MAC等。今天咱们就来聊一聊如何获取手机的相关信息。

    首先我们可以新建一个类,需要有一个上下文的成员变量,至于其他的,不啰嗦,直接上代码!

    获取屏幕分辨率:

//获取分辨率
        String resolution = "";
        DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
        int screenWidth = dm.widthPixels;
        int screenHeight = dm.heightPixels;
        resolution = screenWidth + "*" + screenHeight;

    获取运营商:

//获取运营商
        String providersName = "";
        TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
        String IMSI = telephonyManager.getSubscriberId();
        if (IMSI != null) {
            if (IMSI.startsWith("46000") || IMSI.startsWith("46002") || IMSI.startsWith("46007")) {
                providersName = "中国移动";
            } else if (IMSI.startsWith("46001") || IMSI.startsWith("46006")) {
                providersName = "中国联通";
            } else if (IMSI.startsWith("46003")) {
                providersName = "中国电信";
            } else {
                providersName = "其他";
            }
        } else {
            providersName = "无法获取运营商信息";
        }

    获取联网方式:

/获取联网方式
        String access = "";
        ConnectivityManager connectionManager = (ConnectivityManager) mContext.getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo netWorkInfo = connectionManager.getActiveNetworkInfo();
        access = netWorkInfo.getTypeName();

    获取操作系统版本:

/获取操作系统版本
        String osVersion = "";
        osVersion = android.os.Build.VERSION.RELEASE;

    获取APP版本:

//获取APP版本
        try {
            PackageManager pm = mContext.getPackageManager();
            PackageInfo pi = pm.getPackageInfo(mContext.getPackageName(), PackageManager.GET_ACTIVITIES);
            if (pi != null) {
                errorPram.setAppVersion(pi.versionName == null ? "" : pi.versionName);
            }
        } catch (NameNotFoundException e) {

        }

    获取设备ID:

//获取设备ID
        String deviceId = "";
        deviceId = telephonyManager.getDeviceId();

    获取MAC:

//获取MAC
        String macAddress = "";
        WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
        WifiInfo info = (null == wifiManager ? null : wifiManager.getConnectionInfo());
        if (null != info) {
            macAddress = info.getMacAddress();
        }

    获取手机型号:

//获取手机型号
        String model = "";
        model = android.os.Build.MODEL;

    获取IMEI:

//获取IMEI
        String imei = "";
        TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Activity.TELEPHONY_SERVICE);
        if (tm != null) {
            imei = tm.getDeviceId();
        }

    获取错误报告:

//获取错误报告
        String report = "";
        Writer writer = new StringWriter();
        PrintWriter printWriter = new PrintWriter(writer);
        ex.printStackTrace(printWriter);
        Throwable cause = ex.getCause();
        while (cause != null) {
            cause.printStackTrace(printWriter);
            cause = cause.getCause();
        }
        printWriter.close();
        report = writer.toString();

    需要注意的是,如果要获取错误报告,那么这个类需要继承Thread.UncaughtExceptionHandler接口,从而获取产生的异常的实例,也就是代码第四行当中的ex。

    使用手机进行测试,可以得到相应信息如下:

10-27 16:50:31.404 31481-31481/com.radi.rescue E/66666: 分辨率:1080*1792
10-27 16:50:31.408 31481-31481/com.radi.rescue E/66666: 运营商:中国联通
10-27 16:50:31.410 31481-31481/com.radi.rescue E/66666: 联网方式:WIFI
10-27 16:50:31.410 31481-31481/com.radi.rescue E/66666: 操作系统版本:8.0.0
10-27 16:50:31.421 31481-31481/com.radi.rescue E/66666: app版本:2.6.5
10-27 16:50:31.421 31481-31481/com.radi.rescue E/66666: 设备ID:863127037355473
10-27 16:50:31.437 31481-31481/com.radi.rescue E/66666: MAC:b0:89:00:d7:36:e8
10-27 16:50:31.437 31481-31481/com.radi.rescue E/66666: 手机型号:FRD-AL10
10-27 16:50:31.438 31481-31481/com.radi.rescue E/66666: IMEI:863127037355473
10-27 16:50:31.445 31481-31481/com.radi.rescue E/66666: 错误报告:java.lang.RuntimeException: Unable to start activity ComponentInfozuodakuohaocom.radi.rescue/com.radi.rescue.info.AddSiteActivityyoudakuohao: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194)
                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
                                                            at android.app.ActivityThread.-wrap12(Unknown Source:0)
                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
                                                            at android.os.Handler.dispatchMessage(Handler.java:108)
                                                            at android.os.Looper.loop(Looper.java:166)
                                                            at android.app.ActivityThread.main(ActivityThread.java:7425)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
                                                            at com.radi.rescue.info.AddSiteActivity.onCreate(AddSiteActivity.java:87)
                                                            at android.app.Activity.performCreate(Activity.java:7372)
                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302) 
                                                            at android.app.ActivityThread.-wrap12(Unknown Source:0) 
                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891) 
                                                            at android.os.Handler.dispatchMessage(Handler.java:108) 
                                                            at android.os.Looper.loop(Looper.java:166) 
                                                            at android.app.ActivityThread.main(ActivityThread.java:7425) 
                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) 
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) 
                                                        java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
                                                            at com.radi.rescue.info.AddSiteActivity.onCreate(AddSiteActivity.java:87)
                                                            at android.app.Activity.performCreate(Activity.java:7372)
                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
                                                            at android.app.ActivityThread.-wrap12(Unknown Source:0)
                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
                                                            at android.os.Handler.dispatchMessage(Handler.java:108)
                                                            at android.os.Looper.loop(Looper.java:166)
                                                            at android.app.ActivityThread.main(ActivityThread.java:7425)
                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

    这篇文章就分享这么多,欢迎大家补充和评论。

原创文章 19 获赞 34 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38141453/article/details/83447280