第十例:获取手机号获取本机通讯录中存储的姓名
2015-11-05 18:03
691 查看
String sPhone = "xxxx"; //查询的手机号 List<contactinfo> contactinfoList = new ArrayList<contactinfo>(); String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; Cursor cursor = null; try{ cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER +"= '"+ sPhone +"'", null, null); while(raw_c.moveToNext()){ String name = raw_c.getString(raw_c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = raw_c.getString(raw_c.getColumnIndex(CommonDataKinds.Phone.NUMBER)); Log.i("apiDemo","name :"+ name); } }finally{ if(cursor!=null){ cursor.close(); } }
上面代码在逻辑上是没有问题的.但实际上呢?
如果数据库中存储的为:+861xxxxxxxx1 实际查询: 1xxxxxxxx1
肯定查询不到数据的!!!!
cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
projection,
null,
null,
null);
while(raw_c.moveToNext()){
String name = raw_c.getString(raw_c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = raw_c.getString(raw_c.getColumnIndex(CommonDataKinds.Phone.NUMBER));
if(PhoneNumberUtils.compare(number ,sPhone))
Log.i("apiDemo","name :"+ name);
}
使用循环,比较数据 应该是一个比较靠谱的作法!
1、ContactsContract.Contacts与ContactsContract.CommonDataKinds.Phone的区别?
2、PhoneNumberUtils ?
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories