android獲取androidid
① android怎麼獲取APP的唯一標識applicationId
有很多場景和需求你需要用到手機設備的唯一標識符。例如,略。
在Android中,有以下幾種方法獲取這樣的ID。
1. The IMEI: 僅僅只對Android手機有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
採用此種方法,需要在AndroidManifest.xml中加入一個許可:android.permission.READ_PHONE_STATE,並且用戶應當允許安裝此應用。作為手機來講,IMEI是唯一的,它應該類似於 359881030314356(除非你有一個沒有量產的手機(水貨)它可能有無效的IMEI,如:0000000000000)。
2. Pseudo-Unique ID, 這個在任何Android手機中都有效
有一些特殊的情況,一些如平板電腦的設置沒有通話功能,或者你不願加入READ_PHONE_STATE許可。而你仍然想獲得唯一序列號之類的東西。這時你可以通過取出ROM版本、製造商、CPU型號、以及其他硬體信息來實現這一點。這樣計算出來的ID不是唯一的(因為如果兩個手機應用了同樣的硬體以及Rom 鏡像)。但應當明白的是,出現類似情況的可能性基本可以忽略。要實現這一點,你可以使用Build類:
String m_szDevIDShort = "35" + //we make this look like a valid IMEI
Build.BOARD.length()%10+ Build.BRAND.length()%10 + Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 + Build.DISPLAY.length()%10 + Build.HOST.length()%10 + Build.ID.length()%10 + Build.MANUFACTURER.length()%10 + Build.MODEL.length()%10 + Build.PRODUCT.length()%10 + Build.TAGS.length()%10 + Build.TYPE.length()%10 + Build.USER.length()%10 ; //13 digits
大多數的Build成員都是字元串形式的,我們只取他們的長度信息。我們取到13個數字,並在前面加上「35」。這樣這個ID看起來就和15位IMEI一樣了。
② 如何獲取GAID,Android ID和IMEI
Android設備不同類型的識別設備ID。·唯一編號(IMEI,MEID,ESN,IMSI)·MAC地址·序列號·ANDROID_ID唯一編號(IMEI,MEID,ESN,IMSI)說明在以前,當Android設備均作為電話使用時,尋找唯一標識號比較簡單:()可用於找到(取決於網路技術)手機硬體唯一的IMEI,MEID,ESN和IMSI編號。TelephonyManager.getDeviceIdIMEI,MEID,ESN,IMSI的定義如下:•IMEI(國際移動設備識別碼)唯一編號,用於識別GSM,WCDMA手機以及一些衛星電話(移動設備識別碼)全球唯一編號,用於識別CDMA移動電台設備的物理硬體,MEID出現的目的是取代ESN號段(電子序列號)(電子序列號)唯一編號,用於識別CDMA手機(國際移動用戶識別碼)與所有GSM和UMTS網路手機用戶相關聯的唯一識別編號如需要檢索設備的ID,在項目中要使用以下代碼:•MEID•ESN•IMSIimportandroid.telephony.TelephonyManager;importandroid.content.Context;Stringimeistring=null;Stringimsistring=null;{;telephonyManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);/**getDeviceId().*forexample,.*/imeistring=telephonyManager.getDeviceId();/**getSubscriberId(),*forexample,theIMSIforaGSMphone.*/imsistring=telephonyManager.getSubscriberId();}
③ Android能夠獲取到唯一的設備ID嗎
能,但是需要說明一下:
1. DEVICE_ID
假設我們確實需要用到真實設備的標識,可能就需要用到DEVICE_ID。在以前,我們的Android設備是手機,這個DEVICE_ID可以同通過TelephonyManager.getDeviceId()獲取,它根據不同的手機設備返回IMEI,MEID或者ESN碼,但它在使用的過程中會遇到很多問題:
非手機設備: 如果只帶有Wifi的設備或者音樂播放器沒有通話的硬體功能的話就沒有這個DEVICE_ID
許可權: 獲取DEVICE_ID需要READ_PHONE_STATE許可權,但如果我們只為了獲取它,沒有用到其他的通話功能,那這個許可權有點大才小用
bug:在少數的一些手機設備上,該實現有漏洞,會返回垃圾,如:zeros或者asterisks的產品
2. MAC ADDRESS
我們也可以通過手機的Wifi或者藍牙設備獲取MAC ADDRESS作為DEVICE ID,但是並不建議這么做,因為並不是所有的設備都有Wifi,並且,如果Wifi沒有打開,那硬體設備無法返回MAC ADDRESS.
3. Serial Number
在Android 2.3可以通過android.os.Build.SERIAL獲取,非手機設備可以通過該介面獲取。
4. ANDROID_ID
ANDROID_ID是設備第一次啟動時產生和存儲的64bit的一個數,當設備被wipe後該數重置
ANDROID_ID似乎是獲取Device ID的一個好選擇,但它也有缺陷:
它在Android <=2.1 or Android >=2.3的版本是可靠、穩定的,但在2.2的版本並不是100%可靠的
在主流廠商生產的設備上,有一個很經常的bug,就是每個設備都會產生相同的ANDROID_ID:9774d56d682e549c
5. Installtion ID : UUID
以上四種方式都有或多或少存在的一定的局限性或者bug,在這里,有另外一種方式解決,就是使用UUID,該方法無需訪問設備的資源,也跟設備類型無關。
這種方式是通過在程序安裝後第一次運行後生成一個ID實現的,但該方式跟設備唯一標識不一樣,它會因為不同的應用程序而產生不同的ID,而不是設備唯一ID。因此經常用來標識在某個應用中的唯一ID(即Installtion ID),或者跟蹤應用的安裝數量。很幸運的,Google Developer Blog提供了這樣的一個框架:
④ 如何查看自己安卓手機的Android Device ID
1、打開撥號界面。
(4)android獲取androidid擴展閱讀:
AndroidID用於唯一識別一部設備的一次刷機行為,雖然不能完全確定該設備的唯一性(真的唯一性是用IMEI號的),但是可以很大程度上過濾重復設備。
這是移動互聯網廣告行業,尤其是CPI廣告的基礎。設備ID非常重要。CPI廣告是根據實際安裝數量計費的,廣告商可以使用androidid來排除重復安裝。傳遞一個AndroidID直接影響到某些廣告是否會被放置在某些位置。
在RTB行業中,有很多提供數據的第三方公司,他們根據AndroidID買賣數據,將各種數據對應給用戶。
⑤ 如何獲得Android設備名稱
首先,添加許可權:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
有了許可權之後才能使用 TelephonyManager ,不然會報沒有許可權的錯誤。
TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService( Context.TELEPHONY_SERVICE);
//獲取本機MIEI號碼(僅手機存在)
String deviceId = telephonyManager.getDeviceId();
//獲取設備序列號
String sn = telephonyManager.getSimSerialNumber();
//獲取本機電話號碼
String phonenumber = telephonyManager.getLine1Number();
獲取本機號碼:
//獲取本機型號
String phonetype = android.os.Build.MODEL;
⑥ android 已知控制項的id名 怎麼得到其id值
Android中的組件需要用一個int類型的值來表示,這個值也就是組件標簽中的id屬性值。id屬性只能接受資源類型的值,也就是必須以@開頭的值,例如,@id/abc、@+id/xyz等。 如果在@後面使用「+」,表示當修改完某個布局文件並保存後,系統會自動在R.java文件中生成相應的int類型變數。變數名就是「/」後面的值,例如,@+id/xyz會在R.java文件中生成int xyz = value,其中value是一個十六進制的數。如果xyz在R.java中已經存在同名的變數,就不再生成新的變數,而該組件會使用這個已存在的變數的值。 也就是說,如果使用@+id/name形式,當R.java中存在名為name變數時,則該組件會使用該變數的值作為標識。如果不存在該變數,則添加一個新的變數,並為該變數賦相應的值(不會重復)。 既然組件的id屬性是一個資源id就可以,那麼自然可以設置任何已經存在的資源id值,例如,@drawable/icon、@string/ok、@+string/you等。當然,也可以設置android系統中已存在的資源id,例如,樓主提出的@id/android:list,那麼這個android是什麼意思呢,實際上,這個android就是系統的R類(在R.java文件中)所在的package。我們可以在Java代碼編輯區輸入android.R.id.,就會列出相應的資源id,例如,也可以設置id屬性值為@id/android:message。 <ListView android:id="@+id/android:message" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 還有另外一種方法查看系統中定義的id,進入<android sdk安裝目錄>\platforms\android-1.5\data\res\values目錄,找到ids.xml文件,打開後,內容如下: <?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="price_edit">false</item> <item type="id" name="amount_edit">false</item> </resources> 若在ids.xml中定義了ID,則在layout中可如下定義@id/price_edit,否則@+id/price_edit
⑦ 怎麼獲取android設備id
(1)DEVICE_ID
Android系統為開發者提供的用於標識手機設備的串號
TelephoneManager tm=TelephoneManager.getSystemService(Context.TELEPHONE_SERVICE);
tm.getDeviceId();
缺陷:
(1)非手機設備
(2)許可權問題
(2)ANDROID_ID
在設備首次啟動時,系統會隨機生成一個64位的數字,並把這個數字以16進制字元串的形式保存下來,這個16進制的字元串就是ANDROID_ID
String ANDROID_ID=Setting.System.getString(getContentResolver(),Setting.System.ANDROID_ID);
缺陷:
(1)廠商Bug:不同的設備可能會產生相同的ANDROID_ID
(2)廠商Bug:有些設備返回的值為null
(3)Serial Number
Android系統2.3版本以上可以通過下面的方法得到Serial Number,且非手機設備也可以通過該介面獲取。
String serial=Andorid.os.Build.SERIAL;
⑧ android 關於獲取控制項id的問題 代碼如下:
當然找不到了!因為現在你添加的是setting.xml,所以這個ImageView會默認在setting.xml里找,setting.xml里沒有所以找不到;解決辦法是你必須通過setting.xml把preference_image.xml載入(inflate)進來,如:
LayoutInflater
inflater
=
getLayoutInflater();
View
imageLayout
=
inflater.inflate(R.layout.preference_image.xml,null);然後
ImageView
imageView
=
(ImageView)
imageLayout.findViewById(R.id.RightImage);
這只是大致步驟,具體看你的程序
⑨ 如何查看android的設備id
java獲得android的imei號步驟: 1、許可權添加: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 2、調用android的api TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String IMEI = telephonyManager.getDeviceId(); 3、adb命令獲得: adb shell mpsys iphonesubinfo 4、任何手機都可以在撥打電話的界面輸入*#06# 來查看IMEI。
⑩ 如何獲取android設備id
1. The IMEI: 僅僅只對Android手機有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
採用此種方法,需要在AndroidManifest.xml中加入一個許可:android.permission.READ_PHONE_STATE,並且用戶應當允許安裝此應用。作為手機來講,IMEI是唯一的,它應該類似於 359881030314356(除非你有一個沒有量產的手機(水貨)它可能有無效的IMEI,如:0000000000000)。
2. Pseudo-Unique ID, 這個在任何Android手機中都有效
有一些特殊的情況,一些如平板電腦的設置沒有通話功能,或者你不願加入READ_PHONE_STATE許可。而你仍然想獲得唯一序列號之類的東西。這時你可以通過取出ROM版本、製造商、CPU型號、以及其他硬體信息來實現這一點。這樣計算出來的ID不是唯一的(因為如果兩個手機應用了同樣的硬體以及Rom 鏡像)。但應當明白的是,出現類似情況的可能性基本可以忽略。要實現這一點,你可以使用Build類:
String m_szDevIDShort = "35" + //we make this look like a valid IMEI
Build.BOARD.length()%10+ Build.BRAND.length()%10 + Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 + Build.DISPLAY.length()%10 + Build.HOST.length()%10 + Build.ID.length()%10 + Build.MANUFACTURER.length()%10 + Build.MODEL.length()%10 + Build.PRODUCT.length()%10 + Build.TAGS.length()%10 + Build.TYPE.length()%10 + Build.USER.length()%10 ; //13 digits
大多數的Build成員都是字元串形式的,我們只取他們的長度信息。我們取到13個數字,並在前面加上「35」。這樣這個ID看起來就和15位IMEI一樣了。