雷曼传奇攻略:Android设备信息获取

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 15:55:53
 

Android设备信息获取

分类: Android 2011-04-11 14:28 570人阅读 评论(0) 收藏 举报

近个多月之前整理的,记录,共享。

 

1)android 获取设备型号、OS版本号:

   view plaincopy to clipboardprint?

  1. import android.os.Build;    
  2. // .....     
  3.     Build bd = new Build();    
  4.     String model = bd.MODEL;   
  5.     android.os.Build.MODEL   
  6.     android.os.Build.VERSION.RELEASE   

 

 

2)android 获取设备Id等信息:
    1.需要在AndroidManifest.xml中添加权限。
     
    2.代码:
view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. /*  
  2.    * 电话状态:  
  3.    * 1.tm.CALL_STATE_IDLE=0          无活动  
  4.    * 2.tm.CALL_STATE_RINGING=1  响铃  
  5.    * 3.tm.CALL_STATE_OFFHOOK=2  摘机  
  6.    */   
  7.   tm.getCallState();//int    
  8.   /*  
  9.    * 电话方位:  
  10.    *  
  11.    */   
  12.   tm.getCellLocation();//CellLocation    
  13.   /*  
  14.    * 唯一的设备ID:  
  15.    * GSM手机的 IMEI 和 CDMA手机的 MEID.  
  16.    * Return null if device ID is not available.  
  17.    */   
  18.   tm.getDeviceId();//String    
  19.   /*  
  20.    * 设备的软件版本号:  
  21.    * 例如:the IMEI/SV(software version) for GSM phones.  
  22.    * Return null if the software version is not available.  
  23.    */   
  24.   tm.getDeviceSoftwareVersion();//String    
  25.   /*  
  26.    * 手机号:  
  27.    * GSM手机的 MSISDN.  
  28.    * Return null if it is unavailable.  
  29.    */   
  30.   tm.getLine1Number();//String    
  31.   /*  
  32.    * 附近的电话的信息:  
  33.    * 类型:List  
  34.    * 需要权限:android.Manifest.permission#ACCESS_COARSE_UPDATES  
  35.    */   
  36.   tm.getNeighboringCellInfo();//List    
  37.   /*  
  38.    * 获取ISO标准的国家码,即国际长途区号。  
  39.    * 注意:仅当用户已在网络注册后有效。  
  40.    *       在CDMA网络中结果也许不可靠。  
  41.    */   
  42.   tm.getNetworkCountryIso();//String    
  43.   /*  
  44.    * MCC+MNC(mobile country code + mobile network code)  
  45.    * 注意:仅当用户已在网络注册时有效。  
  46.    *    在CDMA网络中结果也许不可靠。  
  47.    */   
  48.   tm.getNetworkOperator();//String    
  49.   /*  
  50.    * 按照字母次序的current registered operator(当前已注册的用户)的名字  
  51.    * 注意:仅当用户已在网络注册时有效。  
  52.    *    在CDMA网络中结果也许不可靠。  
  53.    */   
  54.   tm.getNetworkOperatorName();//String    
  55.   /*  
  56.    * 当前使用的网络类型:  
  57.    * 例如: NETWORK_TYPE_UNKNOWN  网络类型未知  0  
  58.      NETWORK_TYPE_GPRS     GPRS网络  1  
  59.      NETWORK_TYPE_EDGE     EDGE网络  2  
  60.      NETWORK_TYPE_UMTS     UMTS网络  3  
  61.      NETWORK_TYPE_HSDPA    HSDPA网络  8  
  62.      NETWORK_TYPE_HSUPA    HSUPA网络  9  
  63.      NETWORK_TYPE_HSPA     HSPA网络  10  
  64.      NETWORK_TYPE_CDMA     CDMA网络,IS95A 或 IS95B.  4  
  65.      NETWORK_TYPE_EVDO_0   EVDO网络, revision 0.  5  
  66.      NETWORK_TYPE_EVDO_A   EVDO网络, revision A.  6  
  67.      NETWORK_TYPE_1xRTT    1xRTT网络  7  
  68.    */   
  69.   tm.getNetworkType();//int    
  70.   /*  
  71.    * 手机类型:  
  72.    * 例如: PHONE_TYPE_NONE  无信号  
  73.      PHONE_TYPE_GSM   GSM信号  
  74.      PHONE_TYPE_CDMA  CDMA信号  
  75.    */   
  76.   tm.getPhoneType();//int    
  77.   /*  
  78.    * Returns the ISO country code equivalent for the SIM provider's country code.  
  79.    * 获取ISO国家码,相当于提供SIM卡的国家码。  
  80.    *  
  81.    */   
  82.   tm.getSimCountryIso();//String    
  83.   /*  
  84.    * Returns the MCC+MNC (mobile country code + mobile network code) of the provider of the SIM. 5 or 6 decimal digits.  
  85.    * 获取SIM卡提供的移动国家码和移动网络码.5或6位的十进制数字.  
  86.    * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).  
  87.    */   
  88.   tm.getSimOperator();//String    
  89.   /*  
  90.    * 服务商名称:  
  91.    * 例如:中国移动、联通  
  92.    * SIM卡的状态必须是 SIM_STATE_READY(使用getSimState()判断).  
  93.    */   
  94.   tm.getSimOperatorName();//String    
  95.   /*  
  96.    * SIM卡的序列号:  
  97.    * 需要权限:READ_PHONE_STATE  
  98.    */   
  99.   tm.getSimSerialNumber();//String    
  100.   /*  
  101.    * SIM的状态信息:  
  102.    *  SIM_STATE_UNKNOWN          未知状态 0  
  103.    SIM_STATE_ABSENT           没插卡 1  
  104.    SIM_STATE_PIN_REQUIRED     锁定状态,需要用户的PIN码解锁 2  
  105.    SIM_STATE_PUK_REQUIRED     锁定状态,需要用户的PUK码解锁 3  
  106.    SIM_STATE_NETWORK_LOCKED   锁定状态,需要网络的PIN码解锁 4  
  107.    SIM_STATE_READY            就绪状态 5  
  108.    */   
  109.   tm.getSimState();//int    
  110.   /*  
  111.    * 唯一的用户ID:  
  112.    * 例如:IMSI(国际移动用户识别码) for a GSM phone.  
  113.    * 需要权限:READ_PHONE_STATE  
  114.    */   
  115.   tm.getSubscriberId();//String    
  116.   /*  
  117.    * 取得和语音邮件相关的标签,即为识别符  
  118.    * 需要权限:READ_PHONE_STATE  
  119.    */   
  120.   tm.getVoiceMailAlphaTag();//String    
  121.   /*  
  122.    * 获取语音邮件号码:  
  123.    * 需要权限:READ_PHONE_STATE  
  124.    */   
  125.   tm.getVoiceMailNumber();//String    
  126.   /*  
  127.    * ICC卡是否存在  
  128.    */   
  129.   tm.hasIccCard();//boolean    
  130.   /*  
  131.    * 是否漫游:  
  132.    * (在GSM用途下)  
  133.    */   
  134.   tm.isNetworkRoaming();//   

 

 

 

3)获取AndroidManifest.xml的信息
    1.versionCode 
   view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. getPackageManager().getPackageInfo(packageName, 0).versionCode   
 
    可以用Context.gerPackageName()取得packageName
    2.versionName 
   view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. getPackageManager().getPackageInfo(packageName, 0).versionName      
  2.     getPackageManager().getPackageInfo(pName, PackageManager.GET_CONFIGURATIONS);   

 


4)Android判断应用是否存在
    1.通过包名判断 
   view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. public boolean checkBrowser(String packageName) {    
  2.         if (packageName == null || "".equals(packageName))    
  3.             return false;    
  4.         try {    
  5.             ApplicationInfo info = getPackageManager().getApplicationInfo(    
  6.                     packageName, PackageManager.GET_UNINSTALLED_PACKAGES);    
  7.             return true;    
  8.         } catch (NameNotFoundException e) {    
  9.             return false;    
  10.         }    
  11.     }    
   
    2.通过Activity判断 
   view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. Intent intent = new Intent(Intent.ACTION_VIEW);    
  2.     intent.setClassName("com.android.settings"//$NON-NLS-1$     
  3.             "com.android.settings.InstalledAppDetails"); //$NON-NLS-1$     
  4.     intent.putExtra("com.android.settings.ApplicationPkgName"//$NON-NLS-1$     
  5.             mCurrentPkgName);    
  6.     List acts = getPackageManager().queryIntentActivities(    
  7.             intent, 0);    
  8.     if (acts.size() > 0) {    
  9.         startActivity(intent);    
  10.     } else {    
  11.         Toast.makeText(this,    
  12.                 getString(R.string.failed_to_resolve_activity),    
  13.                 Toast.LENGTH_SHORT).show();    
  14.     }    

 

 

5)获取设备屏幕分辨率
    首先我们需要用到的是DisplayMetrics这个类,它可以为我们获得手机屏幕属性,这里将其所在类导入。 
   view plaincopy to clipboardprint?

  1. import android.util.DisplayMetrics;   
 
    得到实例对象。 
   view plaincopy to clipboardprint?
  1. DisplayMetrics dm = new DisplayMetrics();     
  2.     getWindowManager().getDefaultDisplay().getMetrics(dm);  
  
    得到手机屏幕高度: 
   view plaincopy to clipboardprint?
  1. dm.heightPixels;   
 
    得到手机屏幕宽度: 
   view plaincopy to clipboardprint?
  1. dm.widthPixels;   
 

 

    得到以上手机屏幕的高度跟宽度后,即可以通过这两个值按照比例还设定程序布局中空间的大小。

6)获取CPU序列号

view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. /**  
  2.   * 获取CPU序列号  
  3.   *  
  4.   * @return CPU序列号(16位)  
  5.   * 读取失败为"0000000000000000"  
  6.   */   
  7. public static String getCPUSerial() {   
  8.         String str = "", strCPU = "", cpuAddress = "0000000000000000";   
  9.         try {   
  10.                 //读取CPU信息    
  11.                 Process pp = Runtime.getRuntime().exec("cat /proc/cpuinfo");   
  12.                 InputStreamReader ir = new InputStreamReader(pp.getInputStream());   
  13.                 LineNumberReader input = new LineNumberReader(ir);   
  14.                 //查找CPU序列号    
  15.                 for (int i = 1; i   
  16.                         str = input.readLine();   
  17.                         if (str != null) {   
  18.                                 //查找到序列号所在行    
  19.                                 if (str.indexOf("Serial") > -1) {   
  20.                                         //提取序列号    
  21.                                         strCPU = str.substring(str.indexOf(":") + 1,   
  22.                                                         str.length());   
  23.                                         //去空格    
  24.                                         cpuAddress = strCPU.trim();   
  25.                                         break;   
  26.                                 }   
  27.                         }else{   
  28.                                 //文件结尾    
  29.                                 break;   
  30.                         }   
  31.                 }   
  32.         } catch (IOException ex) {   
  33.                 //赋予默认值    
  34.                 ex.printStackTrace();   
  35.         }   
  36.         return cpuAddress;   
  37. }   

 

 

7)获取位置信息: locationManager
    1.获取LocationManager对象 
   view plaincopy to clipboardprint?

  1. String serviceString = Context.LOCATION_SERVICE;   
  2.     LocationManager LocationManager = (LocationManager)getSystemService(serviceString);   
 
    2.选择定位方法
    2.1 GPS_PROVIDER:        GPS
    2.2    NETWORK_PROVIDER:    NETWORK
    以network为例: 
   view plaincopy to clipboardprint?
  1. String provider = LocationManager.NETWORK_PROVIDER   
  2.     Location location = locationManager.getLaskKnownLocation(provider);   
  3.     double lat = location.getLatitude();   
  4.     double lng = location.getLongitude();   

8)当前时间和时区

 

System.currentTimeMillis()获取当前时间
时区:
TimeZone.getDefault();