Android获取手机信息的工具类

网上收集的一些获取收集信息的代码,制作成一个工具类,以后可以方便调用。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.format.Formatter;

/**
 * 获取手机信息工具类
 *
 */
public class PhoneUtil {

  private static PhoneUtil instance;

  private TelephonyManager tm;
  private Activity act;

  private PhoneUtil(Activity act) {
    tm = (TelephonyManager) act.getSystemService(Context.TELEPHONY_SERVICE);
    this.act = act;
  }

  public static PhoneUtil getInstance(Activity act) {
    if (instance == null) {
      instance = new PhoneUtil(act);
    } else if (instance.act != act) {
      instance = new PhoneUtil(act);
    }
    return instance;
  }

  /** 是否处于飞行模式 */
  public boolean isAirModeOpen() {
    return (Settings.System.getInt(act.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1 ? true
        : false);
  }

  /** 获取手机号码 */
  public String getPhoneNumber() {
    return tm == null ? null : tm.getLine1Number();
  }

  /** 获取网络类型(暂时用不到) */
  public int getNetWorkType() {
    return tm == null ? 0 : tm.getNetworkType();
  }

  /** 获取手机sim卡的序列号(IMSI) */
  public String getIMSI() {
    return tm == null ? null : tm.getSubscriberId();
  }

  /** 获取手机IMEI */
  public String getIMEI() {
    return tm == null ? null : tm.getDeviceId();
  }

  /** 获取手机型号 */
  public static String getModel() {
    return android.os.Build.MODEL;
  }

  /** 获取手机品牌 */
  public static String getBrand() {
    return android.os.Build.BRAND;
  }

  /** 获取手机系统版本 */
  public static String getVersion() {
    return android.os.Build.VERSION.RELEASE;
  }

  /** 获得手机系统总内存 */
  public String getTotalMemory() {
    String str1 = "/proc/meminfo";// 系统内存信息文件
    String str2;
    String[] arrayOfString;
    long initial_memory = 0;

    try {
      FileReader localFileReader = new FileReader(str1);
      BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
      str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小

      arrayOfString = str2.split("\\s+");

      initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
      localBufferedReader.close();

    } catch (IOException e) {
    }
    return Formatter.formatFileSize(act, initial_memory);// Byte转换为KB或者MB,内存大小规格化
  }

  /** 获取手机屏幕宽 */
  public int getScreenWidth() {
    return act.getWindowManager().getDefaultDisplay().getWidth();
  }

  /** 获取手机屏高宽 */
  public int getScreenHeight() {
    return act.getWindowManager().getDefaultDisplay().getHeight();
  }

  /** 获取应用包名 */
  public String getPackageName() {
    return act.getPackageName();
  }

  /**
   * 获取手机MAC地址 只有手机开启wifi才能获取到mac地址
   */
  public String getMacAddress() {
    String result = "";
    WifiManager wifiManager = (WifiManager) act.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    result = wifiInfo.getMacAddress();
    return result;
  }

  /**
   * 获取手机CPU信息 //1-cpu型号 //2-cpu频率
   */
  public String[] getCpuInfo() {
    String str1 = "/proc/cpuinfo";
    String str2 = "";
    String[] cpuInfo = { "", "" }; // 1-cpu型号 //2-cpu频率
    String[] arrayOfString;
    try {
      FileReader fr = new FileReader(str1);
      BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
      str2 = localBufferedReader.readLine();
      arrayOfString = str2.split("\\s+");
      for (int i = 2; i < arrayOfString.length; i++) {
        cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
      }
      str2 = localBufferedReader.readLine();
      arrayOfString = str2.split("\\s+");
      cpuInfo[1] += arrayOfString[2];
      localBufferedReader.close();
    } catch (IOException e) {
    }
    return cpuInfo;
  }

  /** 获取Application中的meta-data内容 */
  public String getMetaData(String name) {
    String result = "";
    try {
      ApplicationInfo appInfo = act.getPackageManager().getApplicationInfo(getPackageName(),
          PackageManager.GET_META_DATA);
      result = appInfo.metaData.getString(name);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return result;
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android获取双卡双待手机的SIM卡信息示例代码

    前言 需要验证手机号的功能,但是国内的手机多是双卡双待的,无法获取到两个号码.在Android的官方文档是没有提供相应的Api的,因为标准的Andoird是没有双卡的,好像也只有国内才会搞双卡双待的神器吧. 以下记录一下做这个功能所学习到的东西. Android 获取本机手机号(适用于双卡双待手机) 直接上代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import

  • Android使用Intent获取联系人信息

    Intent的使用 趁着工作之余,看了一下intent,发现好多知识都已经忘记了,然后自己有重新复习了一遍,在这里做一下笔记,以下为自己总结的几点: intent是一个好东西 他可以启动Activity还可以回调数据 调用各种数据,联系人等等 进程之间可以接收同一个intent 三大组件的桥梁 解释一下为什么是三大组件吧,都知道四大组件分别是Activity,Service,BroadCastReceiver,ContentProvider.Intent是Activity,Service,Bro

  • Android 7.0开发获取存储设备信息的方法

    本文实例讲述了 Android 7.0开发获取存储设备信息的方法.分享给大家供大家参考,具体如下: Android 7.0开发相较之前有不少改进,具体可参考前面的文章Android7.0版本影响开发的改进分析,这里简单总结一下Android 7.0针对存储设备的简单操作方法. MountPoint 我们通过MountPoint来描述android设备信息 private static class MountPoint { String mDescription; String mPath; bo

  • Android编程实现应用获取包名、版本号、权限等信息的方法

    本文实例讲述了Android编程实现应用获取包名.版本号.权限等信息的方法.分享给大家供大家参考,具体如下: /** * 获取当前应用程序的包名 * @param context 上下文对象 * @return 返回包名 */ public static String getAppProcessName(Context context) { //当前应用pid int pid = android.os.Process.myPid(); //任务管理类 ActivityManager manage

  • Android SdkVersion的区别及获取版本信息方法

    1.minSdkVersion,targetSdkVersion,maxSdkVersion,compileSdkVersion四个数值之间有什么区别? • minSdkVersion,maxSdkVersion是项目支持的最低sdk版本和最高sdk版本.在安装apk前,系统会对这两个数值进行判断,决定当前系统是否可以安装,一般maxSdkVerson不会设置. • compileSdkVersion是项目编译时的sdk版本. • targetSdkVersion 会告诉系统,此版本已经经过充分

  • android如何获取联系人所有信息

    只要是开发和手机通讯录有关的应用,总要学会获取联系人信息,每次都google很麻烦,怎么办? 写一个工具类,获取到通讯录里所有的信息并分好类,至于大家怎么用就不管了,看下代码就都明白了,虽然代码很多,但是很简单,大部分都已分类,如果有没有写上的,大家可以打开自己手机上通讯录数据库,里面的字段都有标明,用的内容提供者,因此我们只需要拿到那个字段名基本上就能取出数据了. 工具类: package com.example.test; import java.util.ArrayList; import

  • android 获取本机其他app的版本信息的示例代码

    我们公司过一个测速的插件,我需要去被另一个app升级,这里就会有一个问题,就是如何去获取本机其他app的版本信息呢,后面我会写一篇app自动升级的文章. 我们先建一个实体类,用来存放app信息. package com.zznode.bean; import android.graphics.drawable.Drawable; import android.util.Log; /** * Created by 杰梵 on 2017/9/25. * 用来存取app的信息. */ public c

  • Android获取手机信息的工具类

    网上收集的一些获取收集信息的代码,制作成一个工具类,以后可以方便调用. import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import android.app.Activity; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.p

  • Android 获取手机信息实例详解

    Android 获取手机信息 应用信息:包名.版本号.版本名,手机是否有Root权限 手机信息:手机屏幕宽和高.当前可用内存大小.总内存大小.IMEI号.IESI号.手机型号.手机品牌.手机MacAdd.CPU型号.CPU频率 开门见山,以下是Java代码,XML只有一个TextView显示信息. package com.example.getphoneinfo; import java.io.BufferedReader; import java.io.File; import java.io

  • android 获取手机GSM/CDMA信号信息,并获得基站信息的方法

    在Android中我们常用的轻松获取WIFI信号列表,那如何获取CDMA或者GSM的手机信号呢? 系统提供了TelephonyManager类,此类非常丰富,基本你所需要的手机信息都能获取到,那下面就来看看我们所需要的CDMA与GSM信号是如何获取的吧. private TelephonyManager telephonyManager; private PhoneStateListener phoneStateListener; 首先声明两个变量 在onCreate()方法中初始化变量 Ini

  • Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法

    本文实例讲述了Android获取手机屏幕宽高.状态栏高度以及字符串宽高信息的方法.分享给大家供大家参考.具体如下: 首先定义TextView对象commentText 获取文字的宽高: TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); textPaint.setTextSize(commentText.getTextSize()); textPaint.setColor(Color.WHITE); FontMetrics fo

  • Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context context) { TelephonyManager tm = (TelephonyManager) context .getSystemServic

  • Android获取手机系统版本等信息的方法

    本文实例讲述了Android获取手机系统版本等信息的方法.分享给大家供大家参考.具体如下: String phoneInfo = "Product: " + android.os.Build.PRODUCT; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", TAGS: " + android.os.Build.TAGS; phoneInfo += &qu

  • Android获取手机的版本号等信息的代码

    本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android.os.Build.PRODUCT; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", TAGS: " + android.os.Build.TAGS; phoneInfo +=

  • Android封装高德地图定位工具类Util的详细步骤

    目录 前提 第一步.去官网创建高德Key 第二步  通过Gradle集成SDK(方便): 第三步    配置参数 第四步   获取定位数据 总结 前提 每次做的项目中或者维护公司之前旧项目的时候,都会用到通过定位来获取经纬度,我们都知道,Android官方也提供了获取经纬度的方法,但是不太好使,所以就用了高德地图的API,不能每次用的时候都要写一堆代码,效率挺低的,于是就想着,封装成一个工具类,方便调用,为以后的项目,不管是管理方面还是查找方面都简洁了不少. 第一步.去官网创建高德Key 官网地

  • Android获取手机位置的实现代码

    本文实例为大家分享了Android获取手机位置的方法,供大家参考,具体内容如下 1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOException; import java.io.InputStream; import android.app.Service; import android.content.Intent; import android.cont

  • Android开发之超强图片工具类BitmapUtil完整实例

    本文实例讲述了Android开发之超强图片工具类BitmapUtil.分享给大家供大家参考,具体如下: 说明:为了方便大家使用,本人把大家常用的图片处理代码集中到这个类里 使用了LruCache与SoftReference /** * 图片加载及转化工具 ----------------------------------------------------------------------- 延伸:一个Bitmap到底占用多大内存?系统给每个应用程序分配多大内存? Bitmap占用的内存为:

随机推荐