实现一个简单的拨号器程序
2015-05-01 14:40
274 查看
程序大体完成,上传至github:https://github.com/wylhyz/Dialpanel
为了在拨号的时候能够实时显示所有可能匹配的联系人(实际上没什么用,如果记住了号码那比去通讯录中找要快多了),首先写出一个获取系统的Contacts的ContentProvider的方法,我查找所有联系人的姓名和电话号码的方法如下:
以上代码来自Android 4高级编程。
总体过程就是通过查询到每个联系人信息的ID,然后通过另一个查询查询与此程序关联的联系人信息。
还可以获取联系人的头像缩略图,只需要在projection中加入:
最后那个条件,然后正常获取String类型的ImageURI即可:
通过ImageView的setImageURI()方法可以直接使用本地图片URI,如:
涉及隐私,这里就不再显示我的手机上的测试结果。
程序大体完成,上传至github:https://github.com/wylhyz/Dialpanel
为了在拨号的时候能够实时显示所有可能匹配的联系人(实际上没什么用,如果记住了号码那比去通讯录中找要快多了),首先写出一个获取系统的Contacts的ContentProvider的方法,我查找所有联系人的姓名和电话号码的方法如下:
void search(){ ContentResolver cr = getContentResolver(); String[] projection = new String[]{ ContactsContract.Contacts._ID }; Cursor idCursor = cr.query(ContactsContract.Contacts.CONTENT_URI,projection,null,null,null); String id; while(idCursor.moveToNext()){ int idIdx = idCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID); id=idCursor.getString(idIdx); printContacts(id); } idCursor.close(); } void printContacts(String id){ if(id!=null){ String where = ContactsContract.Data.CONTACT_ID+" = "+id +" AND "+ ContactsContract.Data.MIMETYPE+" = '"+ ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE+"'"; String[] projection = new String[]{ ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER }; Cursor dataCursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI,projection,where,null,null); int nameIdx = dataCursor.getColumnIndexOrThrow(ContactsContract.Data.DISPLAY_NAME); int phoneIdx = dataCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); String[] result = new String[dataCursor.getCount()]; while(dataCursor.moveToNext()){ String name = dataCursor.getString(nameIdx); String number = dataCursor.getString(phoneIdx); number = number.replaceAll(" +", ""); result[dataCursor.getPosition()] = name +" {"+number+"}"; } dataCursor.close(); for(String item : result){ Log.i("TAG",item); } } }
以上代码来自Android 4高级编程。
总体过程就是通过查询到每个联系人信息的ID,然后通过另一个查询查询与此程序关联的联系人信息。
还可以获取联系人的头像缩略图,只需要在projection中加入:
String[] projection = new String[]{ ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.Data.PHOTO_THUMBNAIL_URI };
最后那个条件,然后正常获取String类型的ImageURI即可:
int nameIdx = dataCursor.getColumnIndexOrThrow(ContactsContract.Data.DISPLAY_NAME); int phoneIdx = dataCursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER); int thumbnail = dataCursor.getColumnIndexOrThrow(ContactsContract.Data.PHOTO_THUMBNAIL_URI); String[] result = new String[dataCursor.getCount()]; while(dataCursor.moveToNext()) { String name = dataCursor.getString(nameIdx); String number = dataCursor.getString(phoneIdx); String thumb = dataCursor.getString(thumbnail); number = number.replaceAll(" +", ""); result[dataCursor.getPosition()] = name + " {" + number + "} , " + thumb; }
通过ImageView的setImageURI()方法可以直接使用本地图片URI,如:
imageView.setImageURI(Uri.parse(thumb));
涉及隐私,这里就不再显示我的手机上的测试结果。
程序大体完成,上传至github:https://github.com/wylhyz/Dialpanel
相关文章推荐
- 一个简单的学生成绩管理程序(二叉树实现)
- 一个在程序中实现plugin机制的简单例子
- 用javascript实现的一个简单抽奖小程序
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- 一个简单的用javascript实现的页面内容过滤显示小程序源码
- 一个显示地图数据,并实现简单浏览查询程序源码(SDK编写)
- 一个简单的用javascript实现的页面内容过滤显示小程序源码
- 一个屏蔽广告程序的简单实现
- 一个大学C语言试题的简单实现--员工信息管理程序
- 用servlet实现一个简单的购物车程序
- 发一个struts2+hibernate3实现的简单购物车程序
- 利用java实现一个简单的远程监控程序
- 郭克华手机编程教学视频----我的练习源码(6)实战:实现一个简单的监听程序
- [每天一个demo]用c#实现简单的上传文件程序
- 利用java实现一个简单的远程监控程序
- 用java实现的一个简单web服务器程序
- ADA程序实例(一个简单的智能指针实现)
- ADA程序实例(一个简单的智能指针实现)
- 用java实现的一个简单的定时报警程序