Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 查看通訊錄Contacts是否發生變化

Android 查看通訊錄Contacts是否發生變化

編輯:關於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));
    }



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved