編輯:關於Android編程
/**
* deviceID的組成為:渠道標志+識別符來源標志+hash後的終端識別符
*
* 渠道標志為:
* 1,andriod(a)
*
* 識別符來源標志:
* 1, wifi mac地址(wifi);
* 2, IMEI(imei);
* 3, 序列號(sn);
* 4, id:隨機碼。若前面的都取不到時,則隨機生成一個隨機碼,需要緩存。
*
* @param context
* @return
*/
public static String getDeviceId(Context context) {
StringBuilder deviceId = new StringBuilder();
// 渠道標志
deviceId.append("a");
try {
//wifi mac地址
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String wifiMac = info.getMacAddress();
if(!isEmpty(wifiMac)){
deviceId.append("wifi");
deviceId.append(wifiMac);
PALog.e("getDeviceId : ", deviceId.toString());
return deviceId.toString();
}
//IMEI(imei)
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
if(!isEmpty(imei)){
deviceId.append("imei");
deviceId.append(imei);
PALog.e("getDeviceId : ", deviceId.toString());
return deviceId.toString();
}
//序列號(sn)
String sn = tm.getSimSerialNumber();
if(!isEmpty(sn)){
deviceId.append("sn");
deviceId.append(sn);
PALog.e("getDeviceId : ", deviceId.toString());
return deviceId.toString();
}
//如果上面都沒有, 則生成一個id:隨機碼
String uuid = getUUID(context);
if(!isEmpty(uuid)){
deviceId.append("id");
deviceId.append(uuid);
PALog.e("getDeviceId : ", deviceId.toString());
return deviceId.toString();
}
} catch (Exception e) {
e.printStackTrace();
deviceId.append("id").append(getUUID(context));
}
PALog.e("getDeviceId : ", deviceId.toString());
return deviceId.toString();
}
/**
* 得到全局唯一UUID
*/
public static String getUUID(Context context){
SharedPreferences mShare = getSysShare(context, "sysCacheMap");
if(mShare != null){
uuid = mShare.getString("uuid", "");
}
if(isEmpty(uuid)){
uuid = UUID.randomUUID().toString();
saveSysMap(context, "sysCacheMap", "uuid", uuid);
}
PALog.e(tag, "getUUID : " + uuid);
return uuid;
}
分享到:
今天在我哥們的帶領下,學習了一些關於ListView的優化方案。現在提出來和大家分享下.... 第一點: 在Listview中數據加載時經常用到的ViewHolder,我
網上Android聯系人列表的例子也很多,都和微信的聯系人差不多,由於項目用到了聯系人列表索引功能(產品把字母item給去掉了),不過也還是好實現,這裡我也來分享分享我的
提起BroadcastReceiver大家都很熟悉,它和Activity,Service以及ContentProvider並稱為Android的四大組件(四大金剛),可見
我們知道在Android系統中,我們執行完耗時操作都要另外開啟子線程來執行,執行完線程以後線程會自動銷毀。想象一下如果我們在項目中經常要執行耗時操作,如果經常要開啟線程,