編輯:關於Android編程
1. 幾種常用的設備標識碼
IMEI,Sim卡序列號,Wifi模塊Mac地址,Android_ID
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String imei = telephonyManager.getDeviceId(); String simNo = telephonyManager.getSimSerialNumber(); WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); String wifiAddress = wm.getConnectionInfo().getMacAddress(); String androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);IMEI是可以用軟件直接改寫的,重復是無法避免的,標准是15位數字,有些設備上,連這個標准都保證不了。IMEI與每台手機對應,PAD沒有IMEI。此外,小米2上發現,如果不信任一個APP,那麼這個APP將讀取不到IMEI,即讀到的結果是null。IMEI是有多麼的不靠譜。
2. 常用標識的組合
1. 如果IMEI不為空,返回IMEI,否則,進入2 2. 如果Sim卡序列號不為空,返回序列號,否則,進入3 3. 如果MAC地址不為空,md5(mac+mac_address),否則進入4 4. 如果Android_ID不為空,返回Android_ID,否則進入5 5. 返回invalid_imei
如果是統計APP的安裝量一般用上面這些方法就可以了。這樣統計到的設備數量只會更少,不會更多。
3. 如果要實現設備管理這樣的功能怎麼辦
這就要求保證每個設備的標識不能重復,因此使用上面的方法就不行了。使用UUID來處理,並且持久化到SharedPreference和SD卡,這樣只要APP和文件沒有同時被干掉,就不會重新生成新的標識。
設備id生成
1. 如果imei不為空,並且長度等於15,那麼deviceid = android-imei-uuid-timestamp。否則進入2。 2. deviceid = android-uuid-timestamp
設備id讀取
1. 如果從sharedpreference中,讀到deviceid,將該id存儲到sd卡上,返回改id,否則進入2 2. 如果sd卡中,讀到deviceid,那麼將該id存儲到sharedpreference,返回該id,否則進入3 3. 生成deviceid,存儲到sd卡和sharedpreference中
4. 參考文章
http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
Android PullZoomView是github上面的一個第三方開源項目,該項目實現的功能被新浪微博的移動端廣泛使用,其效果就是,當用戶在下拉過程中,頭部的圖片會有
翻譯自:https://code.facebook.com/posts/366199913563917 快速有效的展示圖片對Facebook Android客戶
做Android開發,避免不了要和SQLite打交道,如果不使用任何框架,直接使用它時,我們往往需要做許多額外的工作,像編寫 SQL 語句與解析查詢結果等,那麼是比較麻煩
Android異步更新UI-線程池-Future-Handler實例分析 前言: 我們在開發Android過程中,在處理耗時任務和UI交互的過程中,都會將耗時任務放到子