編輯:關於Android編程
目的:確定通訊錄是否發生變化
依據:參見ContactsContract.RawContacts類中的VERSION常量,該值是只讀的,當通訊錄發生變化時,都會使該值變化
方法:version值是對應每條通訊錄數據的,如果有100條,則有100個該值,我說采用的判斷方法是這樣的
1、獲取所有version值,組成字符串
2、由於該字符串可能很長,所以采用MD5變換短字符串
3、與之前的字符串比較,將新的保存到SharedPreferences
下面三段代碼則實現了查看通訊錄是否變化
/** * 獲得通訊錄的version * * @return */ private String getContactsVersion() { String version = null; StringBuffer sb = new StringBuffer(); Cursor raws=null; try{ raws = mContext.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, null, null, null, null); while (raws.moveToNext()) { version = raws.getString(raws.getColumnIndex(ContactsContract.RawContacts.VERSION)); sb.append(version); } }catch(Exception e){ e.printStackTrace(); }finally { if(raws!=null){ raws.close(); } } return sb.toString(); }
/** * 將字符串version轉換成MD5格式的 * * @param s * @return */ private String stringToMd5(String s) { byte[] value = s.getBytes(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(value); byte[] temp = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : temp) { sb.append(Integer.toHexString(b & 0xff)); } String md5Version = sb.toString(); Editor editor = spf.edit(); editor.putString("contact_version", md5Version); editor.commit(); return md5Version; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }
/** * 判斷是不是有更新通訊錄 返回true表示有更新,返回false表示沒有更新 */ public Boolean isContactUpdate() { String oldVersion = spf.getString("contact_version", "first"); String newVersion = stringToMd5(getContactsVersion()); if (Log.isLoggable("version", Log.DEBUG)){ Log.d("version", "old version---" + oldVersion); Log.d("version", "new version---" + newVersion); } return (!newVersion.equals(oldVersion)); }
本文實例講述了Android開發實現TextView顯示豐富的文本的方法。分享給大家供大家參考,具體如下:如圖,顯示html的元素控件,點擊連接實現上網,發email,撥
推薦閱讀:Android如何通過手機獲取驗證碼來完成注冊功能先給大家展示下界面效果圖,感覺滿意,請參考實現代碼。Main.xml源碼<?xml versio
本文的代碼接著上一篇獲取聯系人信息寫的。在獲取聯系人信息的時候,我發現遍歷Cursor來獲取所有聯系人的信息比較慢,比如我手機上有大約不到四百人的聯系方式,全部遍歷一次大
在安卓的app中,我們時常都可以留意到當我們在聊天工具中總是能查找到以前的聊天記錄,而且換了手機後就看不到了,微信就是那樣,把聊天