Android设备信息获取
近个多月之前整理的,记录,共享。
1)Android 获取设备型号、OS版本号:
- import android.os.Build;
 - // .....
 - Build bd = new Build();
 - String model = bd.MODEL;
 - android.os.Build.MODEL
 - android.os.Build.VERSION.RELEASE
 
2)android 获取设备Id等信息: 
    1.需要在AndroidManifest.xml中添加权限。 
      
    2.代码: 
- /*
 - * 电话状态:
 - * 1.tm.CALL_STATE_IDLE=0 无活动
 - * 2.tm.CALL_STATE_RINGING=1 响铃
 - * 3.tm.CALL_STATE_OFFHOOK=2 摘机
 - */
 - tm.getCallState();//int
 - /*
 - * 电话方位:
 - *
 - */
 - tm.getCellLocation();//CellLocation
 - /*
 - * 唯一的设备ID:
 - * GSM手机的 IMEI 和 CDMA手机的 MEID.
 - * Return null if device ID is not available.
 - */
 - tm.getDeviceId();//String
 - /*
 - * 设备的软件版本号:
 - * 例如:the IMEI/SV(software version) for GSM phones.
 - * Return null if the software version is not available.
 - */
 - tm.getDeviceSoftwareVersion();//String
 - /*
 - * 手机号:
 - * GSM手机的 MSISDN.
 - * Return null if it is unavailable.
 - */
 - tm.getLine1Number();//String
 - /*
 - * 附近的电话的信息:
 - * 类型:List
 - * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES
 - */
 - tm.getNeighboringCellInfo();//List
 - /*
 - * 获取ISO标准的国家码,即国际长途区号。
 - * 注意:仅当用户已在网络注册后有效。
 - * 在CDMA网络中结果也许不可靠。
 - */
 - tm.getNetworkCountryIso();//String
 - /*
 - * MCC+MNC(mobile country code + mobile network code)
 - * 注意:仅当用户已在网络注册时有效。
 - * 在CDMA网络中结果也许不可靠。
 - */
 - tm.getNetworkOperator();//String
 - /*
 - * 按照字母次序的current registered operator(当前已注册的用户)的名字
 - * 注意:仅当用户已在网络注册时有效。
 - * 在CDMA网络中结果也许不可靠。
 - */
 - tm.getNetworkOperatorName();//String
 - /*
 - * 当前使用的网络类型:
 - * 例如: NETWORK_TYPE_UNKNOWN 网络类型未知 0
 - NETWORK_TYPE_GPRS GPRS网络 1
 - NETWORK_TYPE_EDGE EDGE网络 2
 - NETWORK_TYPE_UMTS UMTS网络 3
 - NETWORK_TYPE_HSDPA HSDPA网络 8
 - NETWORK_TYPE_HSUPA HSUPA网络 9
 - NETWORK_TYPE_HSPA HSPA网络 10
 - NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4
 - NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5
 - NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6
 - NETWORK_TYPE_1xRTT 1xRTT网络 7
 - */
 - tm.getNetworkType();//int
 - /*
 - * 手机类型:
 - * 例如: PHONE_TYPE_NONE 无信号
 - PHONE_TYPE_GSM GSM信号
 - PHONE_TYPE_CDMA CDMA信号
 - */
 - tm.getPhoneType();//int
 - /*
 - * Returns the ISO country code equivalent for the SIM provider's country code.
 - * 获取ISO国家码,相当于提供SIM卡的国家码。
 - *
 - */
 - tm.getSimCountryIso();//String
 - /*
 - * Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits.
 - * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.
 - * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
 - */
 - tm.getSimOperator();//String
 - /*
 - * 服务商名称:
 - * 例如:中国移动、联通
 - * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).
 - */
 - tm.getSimOperatorName();//String
 - /*
 - * SIM卡的序列号:
 - * 需要权限:READ_PHONE_STATE
 - */
 - tm.getSimSerialNumber();//String
 - /*
 - * SIM的状态信息:
 - * SIM_STATE_UNKNOWN 未知状态 0
 - SIM_STATE_ABSENT 没插卡 1
 - SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
 - SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
 - SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
 - SIM_STATE_READY 就绪状态 5
 - */
 - tm.getSimState();//int
 - /*
 - * 唯一的用户ID:
 - * 例如:IMSI(国际移动用户识别码) for a GSM phone.
 - * 需要权限:READ_PHONE_STATE
 - */
 - tm.getSubscriberId();//String
 - /*
 - * 取得和语音邮件相关的标签,即为识别符
 - * 需要权限:READ_PHONE_STATE
 - */
 - tm.getVoiceMailAlphaTag();//String
 - /*
 - * 获取语音邮件号码:
 - * 需要权限:READ_PHONE_STATE
 - */
 - tm.getVoiceMailNumber();//String
 - /*
 - * ICC卡是否存在
 - */
 - tm.hasIccCard();//boolean
 - /*
 - * 是否漫游:
 - * (在GSM用途下)
 - */
 - tm.isNetworkRoaming();//
 
3)获取AndroidManifest.xml的信息 
    1.versionCode 
   
- getPackageManager().getPackageInfo(packageName, 0).versionCode
 
 
    可以用Context.gerPackageName()取得packageName 
    2.versionName 
   
- getPackageManager().getPackageInfo(packageName, 0).versionName
 - getPackageManager().getPackageInfo(pName, PackageManager.GET_CONFIGURATIONS);
 
4)Android判断应用是否存在 
    1.通过包名判断 
   
- public boolean checkBrowser(String packageName) {
 - if (packageName == null || "".equals(packageName))
 - return false;
 - try {
 - ApplicationInfo info = getPackageManager().getApplicationInfo(
 - packageName, PackageManager.GET_UNINSTALLED_PACKAGES);
 - return true;
 - } catch (NameNotFoundException e) {
 - return false;
 - }
 - }
 
   
    2.通过Activity判断 
   
- Intent intent = new Intent(Intent.ACTION_VIEW);
 - intent.setClassName("com.android.settings", //$NON-NLS-1$
 - "com.android.settings.InstalledAppDetails"); //$NON-NLS-1$
 - intent.putExtra("com.android.settings.ApplicationPkgName", //$NON-NLS-1$
 - mCurrentPkgName);
 - List acts = getPackageManager().queryIntentActivities(
 - intent, 0);
 - if (acts.size() > 0) {
 - startActivity(intent);
 - } else {
 - Toast.makeText(this,
 - getString(R.string.failed_to_resolve_activity),
 - Toast.LENGTH_SHORT).show();
 - }
 
5)获取设备屏幕分辨率 
    首先我们需要用到的是DisplayMetrics这个类,它可以为我们获得手机屏幕属性,这里将其所在类导入。 
   
- import android.util.DisplayMetrics;
 
 
    得到实例对象。 
   
- DisplayMetrics dm = new DisplayMetrics();
 - getWindowManager().getDefaultDisplay().getMetrics(dm);
 
  
    得到手机屏幕高度: 
   
- dm.heightPixels;
 
 
    得到手机屏幕宽度: 
   
- dm.widthPixels;
 
得到以上手机屏幕的高度跟宽度后,即可以通过这两个值按照比例还设定程序布局中空间的大小。
6)获取CPU序列号
- /**
 - * 获取CPU序列号
 - *
 - * @return CPU序列号(16位)
 - * 读取失败为"0000000000000000"
 - */
 - public static String getCPUSerial() {
 - String str = "", strCPU = "", cpuAddress = "0000000000000000";
 - try {
 - //读取CPU信息
 - Process pp = Runtime.getRuntime().exec("cat /proc/cpuinfo");
 - InputStreamReader ir = new InputStreamReader(pp.getInputStream());
 - LineNumberReader input = new LineNumberReader(ir);
 - //查找CPU序列号
 - for (int i = 1; i
 - str = input.readLine();
 - if (str != null) {
 - //查找到序列号所在行
 - if (str.indexOf("Serial") > -1) {
 - //提取序列号
 - strCPU = str.substring(str.indexOf(":") + 1,
 - str.length());
 - //去空格
 - cpuAddress = strCPU.trim();
 - break;
 - }
 - }else{
 - //文件结尾
 - break;
 - }
 - }
 - } catch (IOException ex) {
 - //赋予默认值
 - ex.printStackTrace();
 - }
 - return cpuAddress;
 - }
 
7)获取位置信息: locationManager 
    1.获取LocationManager对象 
   
- String serviceString = Context.LOCATION_SERVICE;
 - LocationManager LocationManager = (LocationManager)getSystemService(serviceString);
 
 
    2.选择定位方法 
    2.1 GPS_PROVIDER:        GPS 
    2.2    NETWORK_PROVIDER:    NETWORK 
    以network为例: 
   
- String provider = LocationManager.NETWORK_PROVIDER
 - Location location = locationManager.getLaskKnownLocation(provider);
 - double lat = location.getLatitude();
 - double lng = location.getLongitude();
 
8)当前时间和时区
System.currentTimeMillis()获取当前时间 
时区: 
TimeZone.getDefault();
                    
                
                
            
        
浙公网安备 33010602011771号