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));
}
Android 查看通讯录Contacts是否发生变化的更多相关文章
- Android API之android.provider.ContactsContract.Contacts
android.provider.ContactsContract.Contacts 对应contacts数据表.RawContacts的一个聚合(aggregate)代表同一个人.每个人在数据表co ...
- Android:联系人Contacts之ContentResolver query 参数详解
注:本片整理自 http://blog.csdn.net/wssiqi/article/details/8132603 1.获取联系人姓名 一个简单的例子,这个函数获取设备上所有的联系人ID和联系人N ...
- Android向通讯录添加联系人的一般方法
Android向通讯录添加联系人的一般方法 以一个简单的例子加以说明,记得需要相应的权限: 测试代码,关键的内容就在add函数里面. package zhangphil.demo; import an ...
- [ 原创 ]学习笔记-Android 学习笔记 Contacts (一)ContentResolver query 参数详解 [转载]
此博文转载自:http://blog.csdn.net/wssiqi/article/details/8132603 1.获取联系人姓名 一个简单的例子,这个函数获取设备上所有的联系人ID和联系人NA ...
- Android 查看 无wifi/usb设备的logcat方法
Android 查看 无wifi/usb设备的logcat方法 一.情况 一个定制Android设备,wifi被去掉.我须要调试一个USB设备这样也无法用usb来输出logcat. 由于这个USB设备 ...
- Android 查看App冷启动时间/热启动时间/页面打开时间
Android 查看App冷启动时间/热启动时间/页面打开时间 冷启动时间 热启动时间 页面打开时间 通过adb查看 adb shell am start -W packageName/Activit ...
- Android 查看Apk签名方式V1和V2
Android 查看Apk签名方式V1和V2 java -jar apksigner.jar verify -v my.apk -- Verifies Verified using v1 scheme ...
- Android 查看项目依赖树的四种方式
Android 查看项目依赖树的四种方式: 方式一: ./gradlew 模块名:dependencies //查看单独模块的依赖 ./gradlew :app:dependencies --conf ...
- android操作通讯录的联系人
界面配置文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ...
随机推荐
- find命令笔记
find 命令: 文件查找:locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的:# updatedb, 手动生成文件数据库速度快 find: 实时 精确 支持众 ...
- MSSQL 镜像
1.设置数据库CollectionDB 为完整备份模式服务端: USE master ALTER DATABASE CollectionGuest SET RECOVERY FULL GO 镜相端: ...
- kettle工具同步数据乱码-Linux下乱码问题二
将写好的kettle工程部署到Linux下后,同步的数据都成了乱码,幸运的是数据库有备份. 下面就说一下,kettle工程如何同步两端编码格式都是utf8的数据库. 我们只需要更改kettle数据库连 ...
- [网络流最大流经典][uva 11082][矩阵解压]
题目大意 分析 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring ...
- android XML解析之DOM解析方式
DOM 解析方式步骤: 第一步:首选需要获得DOM解析器工厂实例 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance ...
- Android Geocoder(位置解析)
Android中提供GPS定位服务,同时开发者可以对获得的位置信息进行解析,可以获得位置的详细信息. 1.gps定位 在Eclipse中建立android应用程序.android sdk中提供了loc ...
- 2014年1月9日 Oracle 实用系统函数
1.空值处理 1.1 NVL(column/value,VALUE2) 与SQLSERVER的ISNULL相同 1.2 NVL2(column/value,Value2,Value3) 若参数1为空则 ...
- MyEclipse开发的java web项目在 Eclipse中无法识别
不能识别项目解决办法 在eclipse下,右键项目properties -> project fac e ts 选中 Dynamic web module 选择后面的版本为 2.5(运行环 ...
- B - Maya Calendar(第二季水)
Description During his last sabbatical, professor M. A. Ya made a surprising discovery about the old ...
- vim自动补全文章搜集
引用文章A:http://blog.csdn.net/wendy260310/article/details/18035555 文章介绍:添加C++标准库的tags文件方法.(中文版) 引用文章B:h ...