Android中获取设备的各种信息总结

Android中获取设备的各种信息总结

发布时间:2016-09-07 09:23:11

相信各位Android的开发者们都知道,现在几乎所有的app都需要获得设备信息,那么下面这篇文章就来详细说说获取设备信息的方法。

一、屏幕分辨率

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();

display.getSize(size);

int width = size.x;

int height = size.y;

或者:

DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

int width = metrics.widthPixels;

int height = metrics.heightPixels

上面的代码是要在能获取到Activity的情况下使用的,如果无法获取到Activity,则可以使用一下的代码:

WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);

Display display = wm.getDefaultDisplay();

Point point = new Point();

display.getSize(point);

int width = point.x;

int height = point.y;

二、屏幕尺寸

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

int width=dm.widthPixels;

int height=dm.heightPixels;

int dens=dm.densityDpi;

double wi=(double)width/(double)dens;

double hi=(double)height/(double)dens;

double x = Math.pow(wi,2);

double y = Math.pow(hi,2);

double screenInches = Math.sqrt(x+y);

同样,上面的代码需要在能获取到Activity。

三、获取app名称

public static String getAppName(Context context) {

  String appName = "";

  try {

    PackageManager packageManager = context.getPackageManager();

    ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);

    appName = (String) packageManager.getApplicationLabel(applicationInfo);

  } catch (PackageManager.NameNotFoundException e) {

    e.printStackTrace();

  }

  return appName;

}

四、获取设备厂商和设备名称信息

// 设备厂商

String brand = Build.BRAND;

// 设备名称

String model = Build.MODEL;

获取DeviceID,SIM和IMSI

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String deviceId = tm.getDeviceId();

String sim = tm.getSimSerialNumber();

String imsi = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE).getSubscriberId();

注意需要在AndroidManifest中添加权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

五、获取网络状态

public static String getAPNType(Context context) {

  //结果返回值

  String netType = "nono_connect";

  //获取手机所有连接管理对象

  ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

  //获取NetworkInfo对象

  NetworkInfo networkInfo = manager.getActiveNetworkInfo();

  //NetworkInfo对象为空 则代表没有网络

  if (networkInfo == null) {

    return netType;

  }

  //否则 NetworkInfo对象不为空 则获取该networkInfo的类型

  int nType = networkInfo.getType();

  if (nType == ConnectivityManager.TYPE_WIFI) {

    //WIFI

    netType = "wifi";

  } else if (nType == ConnectivityManager.TYPE_MOBILE) {

    int nSubType = networkInfo.getSubtype();

    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    //4G

    if (nSubType == TelephonyManager.NETWORK_TYPE_LTE

        && !telephonyManager.isNetworkRoaming()) {

      netType = "4G";

    } else if (nSubType == TelephonyManager.NETWORK_TYPE_UMTS || nSubType == TelephonyManager.NETWORK_TYPE_HSDPA || nSubType == TelephonyManager.NETWORK_TYPE_EVDO_0 && !telephonyManager.isNetworkRoaming()) {

      netType = "3G";

    //2G 移动和联通的2G为GPRS或EGDE,电信的2G为CDMA

    } else if (nSubType == TelephonyManager.NETWORK_TYPE_GPRS || nSubType == TelephonyManager.NETWORK_TYPE_EDGE || nSubType == TelephonyManager.NETWORK_TYPE_CDMA && !telephonyManager.isNetworkRoaming()) {

      netType = "2G";

    } else {

      netType = "2G";

    }

  }

  return netType;

}

六、判断设备是否root

网上有很多判断方法,但有些会在界面上弹窗提示获取权限,下面介绍一种无需弹窗判断设备是否root的方法:

/** 判断手机是否root,不弹出root请求框<br/> */

  public static boolean isRoot() {

    String binPath = "/system/bin/su";

    String xBinPath = "/system/xbin/su";

    if (new File(binPath).exists() && isExecutable(binPath))

      return true;

    if (new File(xBinPath).exists() && isExecutable(xBinPath))

      return true;

    return false;

  }

  private static boolean isExecutable(String filePath) {

    Process p = null;

    try {

      p = Runtime.getRuntime().exec("ls -l " + filePath);

      // 获取返回内容

      BufferedReader in = new BufferedReader(new InputStreamReader(

          p.getInputStream()));

      String str = in.readLine();

      if (str != null && str.length() >= 4) {

        char flag = str.charAt(3);

        if (flag == 's' || flag == 'x')

          return true;

      }

    } catch (IOException e) {

      e.printStackTrace();

    } finally {

      if (p != null) {

        p.destroy();

      }

    }

    return false;

  }

七、总结

以上就是关于获取Android中设备各种信息的全部内容,这篇文章对大家开发Android App具有一定参考借鉴价值,希望对大家能有所帮助,如果有疑问大家可以留言交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容