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的介紹,用以使用標