1. 程式人生 > >android 獲取裝置資訊

android 獲取裝置資訊

android.os.Build裝置常量以及imsi號與ip地址的獲得

android.os.Build.MODEL :裝置名
android.os.Build.BRAND: 裝置廠商
android.os.Build.VERSION.SDK:sdk版本號
一般用於版本相容的檢測或者其他功能
比如說coolpad 9930手機2.2的android系統
擇MODEL為9930,BRAND為coolpad,sdk為8
imsi號獲得
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE).getSubscriberId();
獲取ip地址

1 2 3 4 5 6 7 8 9 10 11 12 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);       WifiInfo wifiInfo = wifiManager.getConnectionInfo();       int ipAddress = wifiInfo.getIpAddress();       String ip = intToIp(ipAddress);       public String intToIp(int i) {       return
 ((i >> 24 ) & 0xFF ) + "." +       ((i >> 16 ) & 0xFF) + "." +       ((i >> 8 ) & 0xFF) + "." +       ( i & 0xFF) ;       }

 Android 關於android.os.Build介紹

關於Build類的介紹

這個類為一個獲取裝置一些初始化資訊的類,該類的主要資訊都是通過一些static的欄位獲得:

public static finalString BOARD The name of the underlying board, like "goldfish".(裝置廠商)
public static finalString The system bootloader version number.
public static finalString BRAND The brand (e.g., carrier) the software is customized for, if any.
public static finalString The name of the instruction set (CPU type + ABI convention) of native code.
public static finalString The name of the second instruction set (CPU type + ABI convention) of native code.
public static finalString The name of the industrial design.
public static finalString A build ID string meant for displaying to the user
public static finalString A string that uniquely identifies this build.
public static finalString The name of the hardware (from the kernel command line or /proc).
public static finalString HOST
public static finalString ID Either a changelist number, or a label like "M4-rc20".
public static finalString The manufacturer of the product/hardware.
public static finalString MODEL The end-user-visible name for the end product.(裝置名)
public static finalString The name of the overall product.
public static finalString RADIO This field is deprecated. The radio firmware version is frequently not available when this class is initialized, leading to a blank or "unknown" value for this string. Useinstead.
public static finalString A hardware serial number, if available.
public static finalString TAGS Comma-separated tags describing the build, like "unsigned,debug".
public static final long TIME
public static finalString TYPE The type of build, like "user" or "eng".
public static finalString USER

//獲取當前ANDRROID 版本

 public static int getApiLevel() {

int currentApi = 0;
  if (currentApi > 0) {
   return currentApi;
  }
  try {
   currentApi = Integer.valueOf(android.os.Build.VERSION.SDK);
  } catch (NumberFormatException e) {
   currentApi = 0;
  }
  return currentApi;
 }

//判斷機型例項

 public static boolean shouldChangeConnectForBluetooth(){
  if (android.os.Build.MODEL.equalsIgnoreCase("GT-I9300")) {
   return true;
  }
  if (android.os.Build.MODEL.equalsIgnoreCase("GT-N8000")) {
   return true;
  }
  return false;
 }

 public static boolean shouldUseModeApi() {

  // Samsung GT-I5508
  if (android.os.Build.DEVICE.equalsIgnoreCase("GT-I5508")) {
   return true;
  }

}

  // Motorola milestone 1 and 2 & motorola droid
  if (android.os.Build.DEVICE.toLowerCase().contains("milestone2")
    || android.os.Build.BOARD.toLowerCase().contains("sholes")
    || android.os.Build.PRODUCT.toLowerCase().contains("sholes")) {
   return true;
  }

  if (android.os.Build.BRAND.toLowerCase().startsWith("dell")
    && android.os.Build.DEVICE.equalsIgnoreCase("streak")) {
   return true;
  }

 public static String getCpuAbi() {
  if (isCompatible(4)) {
   Field field;
   try {
    field = android.os.Build.class.getField("CPU_ABI");
    return field.get(null).toString();
   } catch (Exception e) {
    Log.w(THIS_FILE,
      "Announce to be android 1.6 but no CPU ABI field", e);
   }

  }
  return "armeabi";
 }

3)獲取AndroidManifest.xml的資訊
1.versionCode
view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
getPackageManager().getPackageInfo(packageName, 0).versionCode
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
getPackageManager().getPackageInfo(packageName, 0).versionName
getPackageManager().getPackageInfo(pName, PackageManager.GET_CONFIGURATIONS);
getPackageManager().getPackageInfo(packageName, 0).versionName
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
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;
}
}
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判斷
view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
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();
}
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;
import android.util.DisplayMetrics;
得到例項物件。
view plaincopy to clipboardprint?
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
得到手機螢幕高度:
view plaincopy to clipboardprint?
dm.heightPixels;
dm.heightPixels;
得到手機螢幕寬度:
view plaincopy to clipboardprint?
dm.widthPixels;
dm.widthPixels;

得到以上手機螢幕的高度跟寬度後,即可以通過這兩個值按照比例還設定程式佈局中空間的大小。

6)獲取CPU序列號

view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
/**
* 獲取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;
}
/**
* 獲取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);
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();
String provider = LocationManager.NETWORK_PROVIDER
Location location = locationManager.getLaskKnownLocation(provider);
double lat = location.getLatitude();
double lng = location.getLongitude();
8)當前時間和時區

System.currentTimeMillis()獲取當前時間
時區:
TimeZone.getDefault();

相關推薦

android 獲取裝置資訊

android.os.Build裝置常量以及imsi號與ip地址的獲得 android.os.Build.MODEL :裝置名 android.os.Build.BRAND: 裝置廠商 android.os.Build.VERSION.SDK:sdk版本號 一般用於版本

android獲取裝置和應用資訊

本文將介紹如何獲取當前裝置和應用基本資訊! 建立一個android應用(AndroidTest),所需許可權如下(AndroidManifest.xml檔案): <uses-permission android:name="android.permissio

android獲取裝置唯一標識

IMEI 百度百科解釋:IMEI(International Mobile Equipment Identity)是國際移動裝置身份碼的縮寫,國際移動裝備辨識碼,是由15位數字組成的“電子串號”,它與每臺行動電話機一一對應,而且該碼是全世界唯一的。每一隻行動電話機在組裝完成後都將被賦予一個全

React Native獲取裝置資訊元件

轉載 https://www.jianshu.com/p/907b003835dc 本文原創首發於公眾號:ReactNative開發圈,轉載需註明出處。 這次介紹的獲取移動裝置資訊的元件名叫:react-native-device-info,相容IOS和安

Android獲取CPU資訊 CPU名字和主頻

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android 獲取位置資訊(經緯度)(附程式碼)

        獲取位置資訊主要通過GPS和網路位置兩種方法,優先順序還是GPS,有點就不多說了,下面說一下我做的方法及附程式碼,有疑問可在下方留言。        思路便是GPS優先,但在GPS訊號弱的情況下采取拿

【迅為iTop4412學習筆記】7.以模組方式註冊裝置,以及驅動獲取裝置資訊

宣告 以下都是我剛開始看驅動視訊的個人強行解讀,如果有誤請指出,共同進步。 本節目標 以module的方式註冊裝置 正文 我們之前提到的流程:註冊裝置->註冊驅動,匹配成功則呼叫probe函式。 (至於probe函式是用來幹啥的

Android獲取儲存資訊

5.1和6.0以上獲取SD卡和USB(OTG)儲存大小: 要獲取儲存裝置的儲存大小,先需要獲取裝置的路徑,我這裡的裝置SD卡都只有一張,固定為/mnt/external_sd,USB口可能有多個,網上說的一般是/mnt/usb_storage,但我找個幾個5.1的平板都獲取不到,最後通過adb

Android 獲取裝置公網IP/私網IP地址

在應用除錯過程中,對接的技術人員要求提供一下機頂盒 的外網IP地址,於是打開了盒子上的設定,將IP地址發了過去,對面回覆說這是私網IP,要公網IP才可以。 一般情況下,電腦的公網IP地址很好查:開啟百度: 但是有些機頂盒上是沒有瀏覽器的,所以就需要通過程式碼的層面來獲

android獲取jks資訊以及git上傳檔案

一.獲取jks簽名 資訊: keytool -list -v -keystore xxx.jks  輸入金鑰庫口令: 金鑰庫型別: JKS 金鑰庫提供方: SUN 您的金鑰庫包含 1 個條目 別名: meibaa 建立日期: 2018-8-23 條目型別: Priva

React Native 獲取裝置資訊

一、獲取方案 使用開源的第三方元件react-native-device-info,該元件適用於iOS和Android雙平臺。 二、元件使用 在ReactNative專案中下載第三方元件依賴包, 我們一般都是使用命令列來執行下載:  進入專案執行:npm inst

Android獲取裝置唯一標識解決方案

關於Android裝置唯一識別符號號 前言 由於在開發中需要開發遊客模式,在使用者沒有登入的情況下必須確保裝置的唯一性,於是慣性思維想到的肯定是使用DevicesId 來作為裝置的唯一標識,用以代替使用者登入以後的唯一識別符號。 但是由於國內複雜的rom定製情況,以及使

iOS 獲取裝置資訊,mac地址,IP地址,裝置名稱

#import "DeviceInfoUtil.h" #import "GlobleData.h" #import "sys/utsname.h" #import <AdSupport/AdSupport.h> #import <ifaddrs.h>

Android 獲取裝置ID

許可權 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 獲取裝置ID String model = ""; TelephonyManager tm =

android獲取LTE資訊

(3)第三種方法適用於大多數裝置,直接上程式碼: private class SignalStrengthListener extends PhoneStateListener{public void onSignalStrengthsChanged(SignalStrength signalStrengt

移動端如何獲取裝置資訊

這次介紹的獲取移動裝置資訊的元件名叫:react-native-device-info,相容IOS和安卓雙平臺,可以獲取裝置ID、裝置品牌、裝置型號、IP以及APP版本號等資訊。是一個應用很廣泛的基礎元件。 親測可用,已在雙端真機上測試,均能獲取到裝置資訊! 安裝 npm install

安卓獲取渠道名渠道id Android獲取裝置唯一標識的終極解決方法,防止安卓7.0時崩潰問題

一,先說獲取渠道名(這裡以友盟為例) /* * 4.5.1新加渠道名欄位,用來傳給後臺去統計各個渠道下載量 * */ public static String getSource() { //獲取渠道名 Strin

Android獲取裝置唯一標識碼

話不多說,先貼程式碼 /**獲取裝置唯一標識碼
 * @param context 上下文
 * @return 裝置唯一標識碼
 */
 public static String getUDID

android獲取裝置唯一標識完美解決方案

這是Android系統為開發者提供的用於標識手機裝置的串號,也是各種方法中普適性較高的,可以說幾乎所有的裝置都可以返回這個串號,並且唯一性良好。 這個DEVICE_ID可以同通過下面的方法獲取: TelephonyManager tm = (TelephonyManager)getSystemServi

Android獲取裝置唯一ID

Android的開發者在一些特定情況下都需要知道手機中的唯一裝置ID。例如,跟蹤應用程式的安裝,生成用於複製保護的DRM時需要使用裝置的唯一ID。在本文件結尾處提供了作為參考的示例程式碼片段。 範圍 本文提供有關如何讀取各種Android裝置的 ID的介紹,用以使用標