Android 获取设备信息
)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这个类,它可以为我们获得手机屏幕属性,这里将其所在类导入。
??
view plaincopy to clipboardprint?
??? import android.util.DisplayMetrics;??
??? 得到实例对象。
??
view plaincopy to clipboardprint?
??? DisplayMetrics dm = new DisplayMetrics();????
??????? getWindowManager().getDefaultDisplay().getMetrics(dm);?
?
??? 得到手机屏幕高度:
??
view plaincopy to clipboardprint?
??? dm.heightPixels;??
??? 得到手机屏幕宽度:
??
view plaincopy to clipboardprint?
??? 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对象
??
view plaincopy to clipboardprint?
??? String serviceString = Context.LOCATION_SERVICE;??
??????? LocationManager LocationManager = (LocationManager)getSystemService(serviceString);??
??? 2.选择定位方法
??? 2.1 GPS_PROVIDER:??????? GPS
??? 2.2??? NETWORK_PROVIDER:??? NETWORK
??? 以network为例:
??
view plaincopy to clipboardprint?
??? String provider = LocationManager.NETWORK_PROVIDER??
??????? Location location = locationManager.getLaskKnownLocation(provider);??
??????? double lat = location.getLatitude();??
??????? double lng = location.getLongitude();??
8)当前时间和时区
System.currentTimeMillis()获取当前时间
时区:
TimeZone.getDefault();
?