当前位置: 代码迷 >> Android >> Android 查看通讯录Contacts是不是发生变化
  详细解决方案

Android 查看通讯录Contacts是不是发生变化

热度:86   发布时间:2016-04-28 05:17:13.0
Android 查看通讯录Contacts是否发生变化

目的:确定通讯录是否发生变化

依据:参见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));    }



  相关解决方案