Android编程操作手机通讯录的方法示例
程序员文章站
2023-11-17 22:06:34
本文实例讲述了android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下:
手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。类似...
本文实例讲述了android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下:
手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子。同样的这次也会使用到内容提供者的知识。
1. 要操作通信录就要得到授权,也就是读或者写通讯录的权力。这里也需要使用junit
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.lxh.contact" android:versioncode="1" android:versionname="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> </application> <uses-sdk android:minsdkversion="8" /> <instrumentation android:name="android.test.instrumentationtestrunner" android:targetpackage="org.lxh.contact" android:label="testformyapp" /> <uses-permission android:name="android.permission.read_contacts" /> <uses-permission android:name="android.permission.write_contacts" /> </manifest>
2. 开始取得通讯录里的内容,主要就是名称,号码,邮箱
package org.lxh.contact; import android.content.contentresolver; import android.database.cursor; import android.net.uri; import android.provider.contactscontract; import android.test.androidtestcase; import android.util.log; public class testcontact extends androidtestcase{ //junit测试类 public void testfind() throws throwable{ uri uri=contactscontract.contacts.content_uri; //通讯录的uri,这是推荐的常量 contentresolver resol=this.getcontext().getcontentresolver(); cursor cursor=resol.query(uri, null, null, null, null); //取得通讯录里的内容 while(cursor.movetonext()){ stringbuffer buf=new stringbuffer(); //实例化一个可变字符串stringbuffer //取得联系人id,每个条目都有一个唯一的id(主键) string contactid=cursor.getstring(cursor.getcolumnindex(contactscontract.contacts._id)); //取得联系人的显示名称 string name=cursor.getstring(cursor.getcolumnindex(contactscontract.data.display_name)); buf.append("id:"+contactid).append(",name:"+name); //取得联系人的号码 cursor phone=resol.query(contactscontract.commondatakinds.phone.content_uri, null,contactscontract.commondatakinds.phone.contact_id+" = "+contactid,null,null); while(phone.movetonext()){ string phonum=phone.getstring(phone.getcolumnindex(contactscontract.commondatakinds.phone.number)); buf.append(phonum); } phone.close(); //取得联系人的email cursor email=resol.query(contactscontract.commondatakinds.email.content_uri ,null,contactscontract.commondatakinds.email.contact_id+" = "+contactid,null,null); while(email.movetonext()){ string mail=email.getstring(email.getcolumnindex(contactscontract.commondatakinds.email.data)); buf.append(",mail:"+mail); } email.close(); log.i("testcontact",buf.tostring()); } cursor.close(); } }
看这个查询过程可以知道,其实这里有2张表,一张存着id和name,一张存着号码,邮箱之类的信息。id为主键,后面的表用它作为外键。至于删除和其他操作你们可以自己看文档。我这里就不说了。
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android布局layout技巧总结》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android资源操作技巧汇总》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。