導航:首頁 > 器材知識 > java如何獲取手機設備號

java如何獲取手機設備號

發布時間:2025-02-10 05:40:04

A. 如何檢索Android設備的唯一ID

Android的開發者在一些特定情況下都需要知道手機中的唯一設備ID。例如,跟蹤應用程序的安裝,生成用於復制保護的DRM時需要使用設備的唯一ID。
范圍

本文提供有關如何讀取各種Android設備的 ID的介紹,用以使用標識號。本文假定用戶已經安裝了Android以及開發應用程序必要的工具。並且,本文假定用戶已了解Android的基本知識。

簡介在搭載Android操作系統的設備中,已經存在好幾種類型的設備標識號。先前的所有Android設備都具有電話功能,因此查找每部設備硬體唯一的IMEI,MEID,或ESN也很容易。但僅能使用Wifi的設備或音樂播放器沒有電話硬體,所以沒有這種類型的唯一標識號。本文闡述了如何讀取不同Android設備的標識號。檢索Android設備ID各種方式

以下是Android設備不同類型的識別設備ID。

· 唯一編號(IMEI,MEID,ESN,IMSI)

· MAC地址

· 序列號

· ANDROID_ID

唯一編號(IMEI,MEID,ESN,IMSI)

說明在以前,當Android設備均作為電話使用時,尋找唯一標識號比較簡單:()可用於找到(取決於網路技術)手機硬體唯一的IMEI,MEID,ESN和IMSI編號。

TelephonyManager.getDeviceId

IMEI,MEID,ESN,IMSI的定義如下:

•IMEI(國際移動設備識別碼)唯一編號,用於識別 GSM,WCDMA手機以及一些衛星電話(移動設備識別碼)全球唯一編號,用於識別CDMA移動電台設備的物理硬體,MEID出現的目的是取代ESN號段(電子序列號)(電子序列號)唯一編號,用於識別CDMA手機(國際移動用戶識別碼)與所有GSM和UMTS網路手機用戶相關聯的唯一識別編號如需要檢索設備的ID,在項目中要使用以下代碼:

•MEID

•ESN

•IMSI

import android.telephony.TelephonyManager;

import android.content.Context;

String imeistring = null;

String imsistring = null;

{

TelephonyManager telephonyManager;

telephonyManager =

( TelephonyManager )getSystemService( Context.TELEPHONY_SERVICE );

/*

* getDeviceId() function Returns the unique device ID.

* for example,the IMEI for GSM and the MEID or ESN for CDMA phones.

*/

imeistring = telephonyManager.getDeviceId();

/*

* getSubscriberId() function Returns the unique subscriber ID,

* for example, the IMSI for a GSM phone.

*/

imsistring = telephonyManager.getSubscriberId();

}

如要只讀取手機的狀態,則需添加READ_PHONE_STATE許可到AndroidManifest.xml文件中。

<uses-permission

android:name="android.permission.READ_PHONE_STATE" >

</uses-permission>

缺點

•Android設備要具有電話功能

•其工作不是很可靠

•序列號

•當其工作時,該值保留了設備的重置信息(「恢復出廠設置」),從而可以消除當客戶刪除自己設備上的信息,並把設備轉另一個人時發生的錯誤。

Mac地址

說明

可通過檢索找到設備的Wi - Fi或藍牙硬體的Mac地址。但是,不推薦使用Mac地址作為唯一的標識號。

缺點設備要具備Wi – Fi功能(並非所有的設備都有Wi – Fi功能)如果設備目前正在使用Wi - Fi,則不能報告Mac地址

序列號

從Android 2.3(「姜餅」)開始,通過android.os.Build.SERIAL方法序列號可被使用。沒有電話功能的設備也都需要上給出唯一的設備ID; 某些手機也可以需要這樣做。序列號可以用於識別MID(移動互聯網設備)或PMP(攜帶型媒體播放器),這兩種設備都沒有電話功能。通過讀取系統屬性值「ro.serialno」的方法,可以使用序列號作為設備ID 。如檢索序列號並作為設備ID使用,請參考下面的代碼示例。

import java.lang.reflect.Method;

String serialnum = null;

try {

Class<?> c = Class.forName("android.os.SystemProperties");

Method get = c.getMethod("get", String.class, String.class );

serialnum = (String)( get.invoke(c, "ro.serialno", "unknown" ) );

}

catch (Exception ignored)

{

}

缺點

序列號無法在所有Android設備上使用。

ANDROID_ID

說明

更具體地說,Settings.Secure.ANDROID_ID 是一串64位的編碼(十六進制的字元串),是隨機生成的設備的第一個引導,其記錄著一個固定值,通過它可以知道設備的壽命(在設備恢復出廠設置後,該值可能會改變)。 ANDROID_ID也可視為作為唯一設備標識號的一個好選擇。如要檢索用於設備ID 的ANDROID_ID,請參閱下面的示例代碼

String androidId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);

缺點

• 對於Android 2.2(「Froyo」)之前的設備不是100%的可靠

• 此外,在主流製造商的暢銷手機中至少存在一個眾所周知的錯誤,每一個實例都具有相同的ANDROID_ID。

結論

對於絕大多數應用來說,只需識別特定的安裝配置,而不需要識別物理設備。所幸是,這樣做就省去了麻煩。

下面是部分使用設備ID的最佳途徑:

•支持各種設備類型的另一種方法是使用getDeviceID()API和ro.serialno的組合

•有許多值得參考的原因,來提醒開發者避免試圖識別特定的設備。對於那些想做一下這方面嘗試的用戶, 最好的辦法可能是使用ANDROID_ID,並在一些傳統設備上做嘗試。

轉載

B. 安卓軟體怎樣識別手機

在安卓系統文件夾裡面有一個「build.prop」文件,裡面就包括手機型號和其他參數等,一些軟體就是讀取這個文件就知道手機型號,

C. JAVA如何獲取區域網內所有安卓設備的ip地址,MAC以及序列號

1.得到區域網網段,可由自己機器的IP來確定 (也可以手動獲取主機IP-CMD-ipconfig /all)
2.根據IP類型,一次遍歷區域網內IP地址
JAVA類,編譯之後直接運行便可以得到區域網內所有IP,具體怎樣使用你自己編寫相應代碼調用便可
代碼如下::
package bean;

import java.io.*;
import java.util.*;

public class Ip{
static public HashMap ping; //ping 後的結果集
public HashMap getPing(){ //用來得到ping後的結果集
return ping;
}

//當前線程的數量, 防止過多線程摧毀電腦
static int threadCount = 0;

public Ip() {
ping = new HashMap();
}

public void Ping(String ip) throws Exception{
//最多30個線程
while(threadCount>30)
Thread.sleep(50);
threadCount +=1;
PingIp p = new PingIp(ip);
p.start();
}

public void PingAll() throws Exception{
//首先得到本機的IP,得到網段
InetAddress host = InetAddress.getLocalHost();
String hostAddress = host.getHostAddress();
int k=0;
k=hostAddress.lastIndexOf(".");
String ss = hostAddress.substring(0,k+1);
for(int i=1;i <=255;i++){ //對所有區域網Ip
String iip=ss+i;
Ping(iip);
}

//等著所有Ping結束
while(threadCount>0)
Thread.sleep(50);
}

public static void main(String[] args) throws Exception{
Ip ip= new Ip();
ip.PingAll();
java.util.Set entries = ping.entrySet();
Iterator iter=entries.iterator();

String k;
while(iter.hasNext()){
Map.Entry entry=(Map.Entry)iter.next();
String key=(String)entry.getKey();
String value=(String)entry.getValue();

if(value.equals("true"))
System.out.println(key+"-->"+value);
}
}
class PingIp extends Thread{
public String ip; // IP
public PingIp(String ip){
this.ip=ip;
}

public void run(){
try{
Process p= Runtime.getRuntime().exec ("ping "+ip+ " -w 300 -n 1");
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
//讀取結果行
for (int i=1 ; i <7; i++)
input.readLine();
String line= input.readLine();

if (line.length() <17 || line.substring(8,17).equals("timed out"))
ping.put(ip,"false");
else
ping.put(ip,"true");
//線程結束
threadCount -= 1;
}catch (IOException e){}
}
}
}

閱讀全文

與java如何獲取手機設備號相關的資料

熱點內容
摩凡陀機械表怎麼樣 瀏覽:259
高壓無功自動補償裝置接線圖 瀏覽:853
如何給一個構件配合一個軸承 瀏覽:522
常州金鼎電動工具 瀏覽:496
閘閥z40h是什麼閥門 瀏覽:664
汽車空調製冷高低壓管多少錢 瀏覽:934
汽車製冷管爆了維修多少錢 瀏覽:889
汽車自動打火裝置電池 瀏覽:374
微信工具箱哪裡 瀏覽:769
電動機的機械效率怎麼求 瀏覽:922
無錫青志機械怎麼樣 瀏覽:947
電力系統自動裝置原理視頻 瀏覽:200
激光儀器哪些最好 瀏覽:172
傳統組合儀表盤有什麼作用 瀏覽:247
油滴實驗裝置 瀏覽:241
機床空行程保護什麼意思 瀏覽:269
機械鍵盤如何設置燈長亮 瀏覽:427
做電氣儀表這一塊怎麼報價 瀏覽:488
中山市向明五金製品有限公司 瀏覽:10
器材公司可以有哪些培訓 瀏覽:180