欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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程序设计有所帮助。