当前位置: 移动技术网 > 移动技术>移动开发>Android > Android编程操作手机通讯录的方法示例

Android编程操作手机通讯录的方法示例

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网