霜风渐紧寒侵被,听孤雁声嘹唳,一声声送一声悲。《御街行》中的这句诗用来形容这个季节的北京真是再合适不过了,霜风阵阵,跑步的时候也越来越舍不得脱去外套了,考验毅力的时刻到了!
言归正传,开发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)
这篇文章就分享这么多,欢迎大家补充和评论。