① 如何為每部android手機生成一個唯一的ID
這種方法是,以一些特定的信息為基礎,生成設備的唯一標識。
首先,演算法角度,常用的有UUID、摘要兩種。這兩種演算法都是以特定的數據為基礎,生成一個唯一的、固定長度的字元串。這里選擇UUID。
其次,計算的基礎數據,建議選擇divice_id和android_id。原因是,1)這兩個標識雖然不能抵抗wipe操作,但受用戶的行為影響比較小;2)如果正常獲取,都是唯一的;③如果不能正常獲取,結果也是固定的,不會頻繁變化。
再次,優先順序的考慮。從這兩個標識的缺點考慮。
1)device_id。
①不能標識非手機設備,例如Pad。
②許可權問題,因為用戶的反感。
③獲取異常,廠商定製系統中存在的bug,致使返回結果為空,或者為一串「0」或「*」。
④對於雙卡雙待手機,會返回兩個device_id。
2)android_id。
①Android2.3以前,系統Bug,導致不同的設備產生相同的結果:9774d56d682e549c。
②有些可能返回null。
③設備差異:對於CDMA設備,與device_id返回相同的值。
綜合考慮,device_id不能標識某些pad,以及用戶的許可權問題,是我們不能接受的,所以優先使用android_id。對於android_id返回為null的情況,再考慮使用device_id。
最後,當android_id和device_id都返回異常的情況,我們可以隨機生成一個UUID。
② 請教關於Android控制項ID,name等標簽屬性的命名規則及含義
android:name=".ActivityMain
這么寫是因為在layout布局文件的<manifest >標簽中已經配置了你的類文件路徑屬性,package="com.xxxxx.xxx.xx".
比如你的ActivityMain類是在一個叫activity包下面,那麼package=「activity」
這樣你在配置activity的時候就直接用點就可以了。
android:id="@+id/button1:
"@+id" 這代表的是你要給標記聲明一個新的id;
「+」表示新建屬性。
其實@+無非就是一種特定的書寫規定而已,就想你用java就得遵循JDK給的標准用裡面的方法一樣。
③ 16位的android_id如何查看
點下經驗條,出來的菜單最下面有16位id
方法如下:
在撥號鍵盤輸入*#*#8255#*#*
在出現的GTalk Service Monitor界面里尋找 到Device ID: android-xxxxxxxx(16位)
Android ID用於唯一識別一部設備的一次刷機行為,雖然不能完全確定該設備的唯一性(真的唯一性是用IMEI號的),但是可以很大程度上過濾重復設備。這是移動互聯網廣告行業的基礎,尤其是CPI廣告,設備ID是非常重要的。CPI廣告是按照實際的安裝數量結算的,廣告主可以用android id來排除重復的安裝。能否傳遞android id直接影響某些廣告是否能在某些地方投放。
④ Android 中 id是什麼意思
一個標識,用來讓程序讀寫XML文檔的時候取到以這個 id 命令的數據或者內容。
⑤ android中ui布局用戶名:怎麼跟密碼:同長度
布局(Layout)的概念是針對Activity的,Activity就是布滿整 個Android設備的窗口或者懸浮於其他窗口上的交互界面。在一個應用程序中通常由多個Activity構成,每個需要顯示的Activity都需要在AndroidManifest.xml文件之中聲明。 通常情況下,開發人員可以使用兩種方式來創建UI組件,一種方式是使用XML方式來配置UI組件的相關屬性,然後裝載這些UI組件,這也是最常用的方式。但是有些特殊情況下,需要動態生成UI組件,則需要使用第二種方式,完全使用Java代碼來創建UI組件。 XML布局文件是Android系統中定義的Layout的常用方式,所有布局文件必須包含在res/layout目錄中,且必須符合Java的命名 規范。當在res/layout目錄下新增了布局文件之後,R.java文件會自動收錄該布局資源,Java代碼可通過setContentView方法 在Activity中顯示該Layout。 setContentView(R.layout.<資源名稱>); 在布局文件中可以指定UI組件的android:id屬性,該屬性的屬性值代表該組件的唯一標識。通過Activity.findViewById()訪問,並且findViewById()必須在setContentView載入xml文件之後使用,否則會拋出異常。 findViewById(R.id.) Android應用的絕大部分UI組件都放在android.widget包及其子包、android.view包及其子包中,Android應用的 所有UI組件都繼承了View類。View類還有一個重要的子類:ViewGroup,ViewGroup類是所有布局管理器的父類。 ViewGroup容器控制其子組件的分布依賴於ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams兩個內部類。 ViewGroup.LayoutParams提供兩個XML屬性設定組件的大小。 android:layout_height:指定該子組件的基本高度; android:layout_width:指定該子組件的基本寬度。 這兩個屬性有三個基本值,這兩個屬性有三個特定的值: fill_parent:指定組件的高度、寬度與父容器組件的一樣。 match_parent:與fill_parent一樣,Android2.2開始推薦使用。 warp_content:內容包裹。 ViewGroup.MarginLayoutParams用於控制子組件周圍的頁邊距。 android:layout_marginBottom(下邊距); android:layout_marginLeft(左邊距); android:layout_marginRight(右邊距): layout_marginTop(上邊距) 對於View的尺寸,android提供了三種單位供選擇使用: px:像素。 dp:dpi,表示屏幕實際的像素。 sp:與scale無關的像素,與dp類似。 尺寸單位選擇的技巧:如果設置長度、高度等屬性時可以使用dp或sp,但是如果設置字體,需要使用px。如果使用dp或sp,系統會根據屏幕密度的變化進行轉換。 為了適應各種界面風格,Android提供了五種布局規范,利用這五種布局,基本上可以在設備上隨心所欲的擺放任何UI組件,這五種布局分別是: FrameLayout(幀布局)。 LinearLayout(線性布局) RelativeLayout(相對布局)。 TableLayout(表格布局)。 AbsoluteLayout(絕對布局)。 線性布局(LinearLayout) LinearLayout是最常用的布局方式,在XML文件中使用標記。它會將容器里的UI組件一個一個挨著排列起來。但是LinearLayout不會換行,當UI組件超出屏幕之後,則不會被顯示出來。LinearLayout有兩個重要的XML屬性:androidgravity(對齊方 式);android:orientation(排列方式)。 android:orientation(排列方式),設定了LinearLayout中包含的UI組件的排列方式,有兩個選項vertical(豎向)、horizontal(橫向,默認值) android:gravity(對齊方式),設定LinearLayout中包含UI組件的對齊方式,其選項很多,常用上(top)、下(bottom)、左(left)、右(right)。
⑥ android的id是什麼數據類型
id一般是唯一的,如何讓它唯一你自己可以制定規則。如果是讓它從1開始增長,那麼你可以定義為整型或者長整型; 如果這個ID是按時間具體到秒來確定,那麼可以設置為時間類型。看看怎麼存儲更方便吧。
⑦ 如何獲取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一樣了。
⑧ android:id
android:id="@+id/***":定義了布局的變數名稱為***,會自動寫進R.java,可在主程序裡面調用R.layout.***來獲取這個布局變數實體。
android:orientation="vertical":這個布局是layout進行垂直布局。水平布局的話是horizontal
⑨ android:id設置的三種方式區別在哪
在android應用開發過程中,對控制項android:id屬性的設置一直有些疑問,經過一番折騰,終於弄清楚了。android:id的設置,通常有三種方式,分別是以下這三種:
android:id="@+id/btn"
android:id="@android:id/tabhost"
android:id="@id/btn"
(1)android:id="@+id/btn"
表示在R.java文件裡面新增一個id為btn的控制項索引,最常用的一種聲明控制項id的方式。
代碼獲取方式:findViewById(R.id.btn);
(2) android:id="@android:id/tabhost"
表示引用的是系統已有的ID,在對應的sdk目錄下的ids.xml裡面。一般外部不去調用,是組件內部調用的時候使用。
代碼獲取方式:android.R.id.tabhost
(3)android:id="@id/btn"
表示引用一個已經存在的ID,在R.java裡面的,比如咱們自己建了一個ids.xml,裡面聲明了一組id,其中一個是btn,那麼就可以這樣引用了。
代碼獲取方式:跟(1)一樣
⑩ android imei多少位
15位,可以通過這個方法獲取
TelephonyManager mTm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = mTm.getDeviceId();