注解:

封装了安装常用的设备信息查询的工具类:

设备宽度、设备高度、SD卡判断、是否有网、版本名称、版本号、唯一标识、手机品牌、手机型号、API等级、Android版本、App进程Id、App进程Name、Meta-Data值、内网ip、公网ip(请求淘宝接口);

代码:

package com.xxx.util;import android.Manifest;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.telephony.TelephonyManager;
import android.util.Log;import org.json.JSONObject;import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;/*** 设备信息的工具类* <p>* Created by Beluga_白鲸.*/public class DeviceUtil {/*** 获取设备宽度(px)** @param context* @return*/public static int deviceWidth(Context context) {return context.getResources().getDisplayMetrics().widthPixels;}/*** 获取设备高度(px)** @param context* @return*/public static int deviceHeight(Context context) {return context.getResources().getDisplayMetrics().heightPixels;}/*** SD卡判断** @return*/public static boolean isSDCardAvailable() {return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);}/*** 是否有网** @param context* @return*/public static boolean isNetworkConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;}/*** 返回版本名字* 对应build.gradle中的versionName** @param context* @return*/public static String getVersionName(Context context) {String versionName = "";try {PackageManager packageManager = context.getPackageManager();PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);versionName = packInfo.versionName;} catch (Exception e) {e.printStackTrace();}return versionName;}/*** 返回版本号* 对应build.gradle中的versionCode** @param context* @return*/public static String getVersionCode(Context context) {String versionCode = "";try {PackageManager packageManager = context.getPackageManager();PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);versionCode = String.valueOf(packInfo.versionCode);} catch (Exception e) {e.printStackTrace();}return versionCode;}/*** 获取设备的唯一标识,deviceId** @param context* @return*/public static String getDeviceId(Context context) {TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {//没有权限则返回""return "";} else {String deviceId = tm.getDeviceId();if (deviceId == null) {return "";} else {return deviceId;}}}/*** 获取手机品牌** @return*/public static String getPhoneBrand() {return android.os.Build.BRAND;}/*** 获取手机型号** @return*/public static String getPhoneModel() {return android.os.Build.MODEL;}/*** 获取手机Android API等级(22、23 ...)** @return*/public static int getBuildLevel() {return android.os.Build.VERSION.SDK_INT;}/*** 获取手机Android 版本(4.4、5.0、5.1 ...)** @return*/public static String getBuildVersion() {return android.os.Build.VERSION.RELEASE;}/*** 获取当前App进程的id** @return*/public static int getAppProcessId() {return android.os.Process.myPid();}/*** 获取当前App进程的Name** @param context* @param processId* @return*/public static String getAppProcessName(Context context, int processId) {String processName = null;ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);// 获取所有运行App的进程集合List l = am.getRunningAppProcesses();Iterator i = l.iterator();PackageManager pm = context.getPackageManager();while (i.hasNext()) {ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());try {if (info.pid == processId) {CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));processName = info.processName;return processName;}} catch (Exception e) {Log.e(DeviceUtil.class.getName(), e.getMessage(), e);}}return processName;}/*** 创建App文件夹** @param appName* @param application* @return*/public static String createAPPFolder(String appName, Application application) {return createAPPFolder(appName, application, null);}/*** 创建App文件夹** @param appName* @param application* @param folderName* @return*/public static String createAPPFolder(String appName, Application application, String folderName) {File root = Environment.getExternalStorageDirectory();File folder;/*** 如果存在SD卡*/if (DeviceUtil.isSDCardAvailable() && root != null) {folder = new File(root, appName);if (!folder.exists()) {folder.mkdirs();}} else {/*** 不存在SD卡,就放到缓存文件夹内*/root = application.getCacheDir();folder = new File(root, appName);if (!folder.exists()) {folder.mkdirs();}}if (folderName != null) {folder = new File(folder, folderName);if (!folder.exists()) {folder.mkdirs();}}return folder.getAbsolutePath();}/*** 通过Uri找到File** @param context* @param uri* @return*/public static File uri2File(Activity context, Uri uri) {File file;String[] project = {MediaStore.Images.Media.DATA};Cursor actualImageCursor = context.getContentResolver().query(uri, project, null, null, null);if (actualImageCursor != null) {int actual_image_column_index = actualImageCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);actualImageCursor.moveToFirst();String img_path = actualImageCursor.getString(actual_image_column_index);file = new File(img_path);} else {file = new File(uri.getPath());}if (actualImageCursor != null) actualImageCursor.close();return file;}/*** 获取AndroidManifest.xml里 的值** @param context* @param name* @return*/public static String getMetaData(Context context, String name) {String value = null;try {ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);value = appInfo.metaData.getString(name);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return value;}/*** 判断当前设备是手机还是平板,代码来自 Google I/O App for Android** @param context* @return 平板返回 True,手机返回 False*/public static boolean isPad(Context context) {return (context.getResources().getConfiguration().screenLayout& Configuration.SCREENLAYOUT_SIZE_MASK)>= Configuration.SCREENLAYOUT_SIZE_LARGE;}/*** 获取ip(内网ip)* @param context* @return*/public static String getIPAddress(Context context) {NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();if (info != null && info.isConnected()) {if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络try {//Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces();for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {return inetAddress.getHostAddress();}}}} catch (SocketException e) {e.printStackTrace();}} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址return ipAddress;}} else {//当前无网络连接,请在设置中打开网络}return null;}/*** 将得到的int类型的IP转换为String类型** @param ip* @return*/public static String intIP2StringIP(int ip) {return (ip & 0xFF) + "." +((ip >> 8) & 0xFF) + "." +((ip >> 16) & 0xFF) + "." +(ip >> 24 & 0xFF);}/*** 获取IP(外网ip、公网ip)*/public static String getNetIp() {String IP = "";try {String address = "http://ip.taobao.com/service/getIpInfo2.php?ip=myip";URL url = new URL(address);//URLConnection htpurl=url.openConnection();HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setUseCaches(false);connection.setRequestMethod("GET");connection.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.7 Safari/537.36"); //设置浏览器ua 保证不出现503if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {InputStream in = connection.getInputStream();// 将流转化为字符串BufferedReader reader = new BufferedReader(new InputStreamReader(in));String tmpString = "";StringBuilder retJSON = new StringBuilder();while ((tmpString = reader.readLine()) != null) {retJSON.append(tmpString + "\n");}JSONObject jsonObject = new JSONObject(retJSON.toString());String code = jsonObject.getString("code");if (code.equals("0")) {JSONObject data = jsonObject.getJSONObject("data");//格式:180.000.00.000(中国区上海上海电信)
//                    IP = data.getString("ip") + "(" + data.getString("country")
//                            + data.getString("area") + "区"
//                            + data.getString("region") + data.getString("city")
//                            + data.getString("isp") + ")";//格式:180.000.00.000IP = data.getString("ip");Log.e("提示", "您的IP地址是:" + IP);} else {IP = "";Log.e("提示", "IP接口异常,无法获取IP地址!");}} else {IP = "";Log.e("提示", "网络连接异常,无法获取IP地址!");}} catch (Exception e) {IP = "";Log.e("提示", "获取IP地址时出现异常,异常信息是:" + e.toString());}return IP;}public static String streamreader(InputStream is) throws IOException {//转换为字符InputStreamReader isr = new InputStreamReader(is, "gbk");BufferedReader br = new BufferedReader(isr);StringBuilder stringBuilder=new StringBuilder();for(String tmp = br.readLine();tmp!= null;tmp = br.readLine()){stringBuilder.append(tmp);}return stringBuilder.toString();}}

Android - 获取设备信息的工具类( DeviceUtil)相关推荐

  1. android异常信息,Android 获取设备信息 异常

    /**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ ...

  2. Android获取汉字首字母工具类

    1.使用方法 String s=GetChineseFirstUtil.getSpells("你"); 2.工具类代码: import java.io.UnsupportedEnc ...

  3. Android获取设备信息(二)

    1:获取开机时长 /*** @return 开机时长* no permission*/public static long getBootTime(){return SystemClock.elaps ...

  4. android 获取设备指纹,Android唯一识别号(设备指纹)的生成

    原理: (尽可能实现,同一设备在不刷机不恢复出厂的情况下,每次生成的设备指纹不变:并且尽可能保证两部不同的设备生成的设备指纹不能一样) 1.将imei号+手机硬件信息+androidID拼接成一个字符 ...

  5. android 获取设备指纹,Android唯一识别号(设备指纹)的生成及原理

    /** * 获取设备指纹的工具类 * *@author BarryHuang *@DATE 2015-8-19 */ public class FingerprintUtil { private st ...

  6. 操作SD卡,获取文件目录及文件工具类Android,listView

    操作SD卡,获取文件目录及文件工具类Android 1.获取文件目录及文件工具类: DirectoryInfo  FileScan 1.1 DirectoryInfo: package com.gls ...

  7. 获取SIM卡信息的工具类

    本工具类可以获取手机的IMSI.本机的手机号码.SIM卡的服务商. 移动.联通可正常获取到SIM卡的手机卡号,但是电信的获取不到.... 首先,需要在AndroidManifest.xml清单配置文件 ...

  8. android获取设备的型号,Android获取手机设备信息

    Android的设备信息获取很简单,导入android.os.Build,在Build类 中有你需要的所有信息. 如果如要经常查阅,可以收藏此文章,需要时点开看一看 下面我打印了一些信息,查查单词的中 ...

  9. Android 获取设备各种信息以及其它

    做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...

最新文章

  1. Leangoo敏捷项目管理软件 6.3.2
  2. Windows下svn客户端和服务器的安装使用
  3. jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
  4. iPhone开源项目汇总(更新版)
  5. SpringCloud-容错处理Hystrix熔断器
  6. python中head_Python pandas.DataFrame.head函数方法的使用
  7. leetcode892. 三维形体的表面积
  8. 如何学习matlab 知乎,知乎日报
  9. 计算机硬件配置和软件有哪些,BIM软件对电脑硬件配置有什么要求?
  10. 在开源UOJ的导航栏中添加新页面链接
  11. .NET高性能编程 - C#如何安全、高效地玩转任何种类的内存之Span的本质(一)。
  12. LINUX 下安装 jdk 问题(please use alien to install rpm packages on Debian )
  13. Zebra 命令模式分析2
  14. CAD制图初学入门如何提高CAD绘图效率?
  15. 【软件工程】安装rational rose的步骤
  16. 计算机画图卡通,windows画图工具怎么画卡通头像?
  17. 智能座舱Tier1“抢攻“ADAS,环视/泊车是第一突破口
  18. 什么是元数据(Metadata)?
  19. 乐动手环app下载安装_乐动手环app下载安装
  20. RabbitMq:java.lang.NoClassDefFoundError: org/springframework/util/backoff/BackOff

热门文章

  1. 优派VX2880-4K-PRO 评测
  2. matlab无法定位程序输入点,无法定位序数XX于动态链接库XX.dll的解决的方法
  3. 韩山师范学院计算机考试,韩山师范学院大一计算机考试题库中的选择题-1 (必考)...
  4. C语言定义起泡法函数对n个数,C语言程序设计第10讲.ppt
  5. vsCode代码块无法折叠收起问题代码块折叠/展开快捷键
  6. 10.一键生成个人微信朋友圈数据电子书
  7. 一次代码审计到RCE的实战渗透案例
  8. unity3d--杂记
  9. odp 加固 mysql 代码_将数组绑定到 ODP.NET 数据库命令
  10. OpenWrt系列:br-lan、eth0、eth1及lo