Android Contacts Provider

public interface BaseColumns
 {
  public static final String _ID = "_id";
  public static final String _COUNT = "_count";
 }

protected interface ContactsColumns
  {
        public static final String DISPLAY_NAME = ContactNameColumns.DISPLAY_NAME_PRIMARY;  //通讯录中人名
     public static final String PHOTO_ID = "photo_id";
     public static final String PHOTO_FILE_ID = "photo_file_id";
     public static final String PHOTO_URI = "photo_uri";
  public static final String PHOTO_THUMBNAIL_URI = "photo_thumb_uri";
     public static final String IN_VISIBLE_GROUP = "in_visible_group";
  public static final String IS_USER_PROFILE = "is_user_profile";
  public static final String HAS_PHONE_NUMBER = "has_phone_number";
  public static final String LOOKUP_KEY = "lookup";
  public static final String CONTACT_LAST_UPDATED_TIMESTAMP ="contact_last_updated_timestamp";
 
  }
   protected interface ContactOptionsColumns
   {
        public static final String TIMES_CONTACTED = "times_contacted";
  public static final String LAST_TIME_CONTACTED = "last_time_contacted";
  public static final String STARRED = "starred";
  public static final String CUSTOM_RINGTONE = "custom_ringtone";
  public static final String SEND_TO_VOICEMAIL = "send_to_voicemail";
   }
    protected interface ContactNameColumns
 {
     public static final String DISPLAY_NAME_SOURCE = "display_name_source";
  public static final String DISPLAY_NAME_PRIMARY = "display_name";
  public static final String DISPLAY_NAME_ALTERNATIVE = "display_name_alt";
  public static final String PHONETIC_NAME_STYLE = "phonetic_name_style";
  public static final String PHONETIC_NAME = "phonetic_name";
  public static final String SORT_KEY_PRIMARY = "sort_key";
  public static final String SORT_KEY_ALTERNATIVE = "sort_key_alt";
 }
  protected interface ContactStatusColumns
  {
     public static final String CONTACT_PRESENCE = "contact_presence";
  public static final String CONTACT_CHAT_CAPABILITY = "contact_chat_capability";
  public static final String CONTACT_STATUS = "contact_status";
  public static final String CONTACT_STATUS_TIMESTAMP = "contact_status_ts";
     public static final String CONTACT_STATUS_RES_PACKAGE = "contact_status_res_package";
     public static final String CONTACT_STATUS_LABEL = "contact_status_label";
     public static final String CONTACT_STATUS_ICON = "contact_status_icon";
  }

遍历通讯录中所有的列名及对应的值:

public class MainActivity extends Activity {

class People
 {
  private String colName;
  private String colVal;
  public String getColName() {
   return colName;
  }
  public void setColName(String colName) {
   this.colName = colName;
  }
  public String getColVal() {
   return colVal;
  }
  public void setColVal(String colVal) {
   this.colVal = colVal;
  }
 }
 private List<People> peoples=new ArrayList<>();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ContentResolver cr=getContentResolver();
  Cursor cur=cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,null);
  while(cur.moveToNext()){        
             String[] columnNames = cur.getColumnNames();
             for (int i = 0; i < columnNames.length; i++) {
           People p=new People();
           p.setColName(columnNames[i]);
           p.setColVal(cur.getString(cur.getColumnIndex(columnNames[i])));
           peoples.add(p);
             }
     }
  
  for (int i = 0; i < peoples.size(); i++) {
   System.out.println("列明:"+ peoples.get(i).getColName()+"  列值:"+peoples.get(i).getColVal());
   
  }

效果如下:

11-06 10:46:54.147: I/System.out(25193): 列明:send_to_voicemail  列值:0
11-06 10:46:54.147: I/System.out(25193): 列明:organization_note  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:custom_ringtone  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:name_raw_contact_id  列值:15
11-06 10:46:54.147: I/System.out(25193): 列明:photo_file_id  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:has_phone_number  列值:1
11-06 10:46:54.147: I/System.out(25193): 列明:contact_status_label  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:display_name  列值:李唐(妈)
11-06 10:46:54.147: I/System.out(25193): 列明:sort_key_alt  列值:LI 李 TANG 唐 ( MA 妈 )
11-06 10:46:54.147: I/System.out(25193): 列明:in_visible_group  列值:1
11-06 10:46:54.147: I/System.out(25193): 列明:starred  列值:0
11-06 10:46:54.147: I/System.out(25193): 列明:display_name_alt  列值:李唐(妈)
11-06 10:46:54.147: I/System.out(25193): 列明:sort_key  列值:LI 李 TANG 唐 ( MA 妈 )
11-06 10:46:54.147: I/System.out(25193): 列明:contact_presence  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:contact_status_res_package  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:contact_status_ts  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:sns_type  列值:0
11-06 10:46:54.147: I/System.out(25193): 列明:times_contacted  列值:64
11-06 10:46:54.147: I/System.out(25193): 列明:contact_status  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:phonetic_name  列值:null
11-06 10:46:54.147: I/System.out(25193): 列明:phone_number  列值:15936165107
11-06 10:46:54.147: I/System.out(25193): 列明:phonetic_name_style  列值:0
11-06 10:46:54.152: I/System.out(25193): 列明:is_user_profile  列值:0
11-06 10:46:54.152: I/System.out(25193): 列明:lookup  列值:930iflyme-17
11-06 10:46:54.152: I/System.out(25193): 列明:contact_status_icon  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:last_time_contacted  列值:1403269106387
11-06 10:46:54.152: I/System.out(25193): 列明:_id  列值:16
11-06 10:46:54.152: I/System.out(25193): 列明:display_name_source  列值:40
11-06 10:46:54.152: I/System.out(25193): 列明:photo_uri  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:photo_thumb_uri  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:contact_chat_capability  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:photo_id  列值:null

11-06 10:46:54.152: I/System.out(25193): 列明:send_to_voicemail  列值:0
11-06 10:46:54.152: I/System.out(25193): 列明:organization_note  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:custom_ringtone  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:name_raw_contact_id  列值:17
11-06 10:46:54.152: I/System.out(25193): 列明:photo_file_id  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:has_phone_number  列值:1
11-06 10:46:54.152: I/System.out(25193): 列明:contact_status_label  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:display_name  列值:刘凯
11-06 10:46:54.152: I/System.out(25193): 列明:sort_key_alt  列值:LIU 刘 KAI 凯
11-06 10:46:54.152: I/System.out(25193): 列明:in_visible_group  列值:1
11-06 10:46:54.152: I/System.out(25193): 列明:starred  列值:0
11-06 10:46:54.152: I/System.out(25193): 列明:display_name_alt  列值:刘凯
11-06 10:46:54.152: I/System.out(25193): 列明:sort_key  列值:LIU 刘 KAI 凯
11-06 10:46:54.152: I/System.out(25193): 列明:contact_presence  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:contact_status_res_package  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:contact_status_ts  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:sns_type  列值:0
11-06 10:46:54.152: I/System.out(25193): 列明:times_contacted  列值:40
11-06 10:46:54.152: I/System.out(25193): 列明:contact_status  列值:null
11-06 10:46:54.152: I/System.out(25193): 列明:phonetic_name  列值:null
11-06 10:46:54.157: I/System.out(25193): 列明:phone_number  列值:18736579852
11-06 10:46:54.157: I/System.out(25193): 列明:phonetic_name_style  列值:0
11-06 10:46:54.157: I/System.out(25193): 列明:is_user_profile  列值:0
11-06 10:46:54.157: I/System.out(25193): 列明:lookup  列值:930iflyme-16
11-06 10:46:54.157: I/System.out(25193): 列明:contact_status_icon  列值:null
11-06 10:46:54.157: I/System.out(25193): 列明:last_time_contacted  列值:1414759606574
11-06 10:46:54.157: I/System.out(25193): 列明:_id  列值:17
11-06 10:46:54.157: I/System.out(25193): 列明:display_name_source  列值:40
11-06 10:46:54.157: I/System.out(25193): 列明:photo_uri  列值:null
11-06 10:46:54.157: I/System.out(25193): 列明:photo_thumb_uri  列值:null
11-06 10:46:54.157: I/System.out(25193): 列明:contact_chat_capability  列值:null
11-06 10:46:54.157: I/System.out(25193): 列明:photo_id  列值:null

}
}

时间: 2024-11-09 20:25:36

Android Contacts Provider的相关文章

【最后一篇API译文】Android开发-API指南- Contacts Provider

Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是大家所译,但至少句子结构较通顺,窃以为比 MSDN 中文版好些.虽有些生硬(比如将 Provider 译为“提供者”,有趣得紧),但好在前无古人,也许 Google 自此便统一了自己的中文术语也未可知.能让更多的国人精确领悟 Android 的精髓,肯定是好事,希望 Google 继续坚持. 这事应

Android Contacts (android通讯录读取)-content provider

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

Android Content Provider的启动过程源代码分析

本文参考Android应用程序组件Content Provider的启动过程源代码分析http://blog.csdn.net/luoshengyang/article/details/6963418和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 1.MainActivity进程向ActivityServiceManager主线程发送GET_CONTENT_PORVIDER_TRANSACTION 如下图: 如图:第一步 ~/Android/frameworks/b

Android Content Provider在应用程序之间共享数据的原理分析

本文参考Android应用程序组件Content Provider在应用程序之间共享数据的原理分析http://blog.csdn.net/luoshengyang/article/details/6967204和<Android系统源代码情景分析>,作者罗升阳. 0.总图流程图如下: 总体类图: 1.MainActivity进程向AriticlesProvider进程发送IContentProvider.QUERY_TRANSACTION 如图:第一步 ~/Android/framework

android content provider 中的URL解析总是出问题?求指导!!!

java.lang.IllegalArgumentException: Unknown URL content:// 不管是自己写或者用别的的代码在我的eclipse中都是报这个错误 很怪,我的URL地址绝对没有写错,是不是和使用版本有关系?我的google提供的eclipse,sdk用的2.3.3 android content provider 中的URL解析总是出问题?求指导!!!

Android Content Provider Guides

Android Content Provider Guides Content Providers管理对结构化数据集的访问.它们包装数据,并且提供一种定义数据安全的机制. Content providers是不同进程间数据连接的标准接口. 要获取content provider中的数据,需要运用你的应用中的 Context中的ContentResolver对象作为一个client来和provider交互. 这个provider对象是一个实现了ContentProvider接口的类的对象.Prov

Forms Android Contacts

1 … 2 forms定义接口 3 4 using System; 5 using System.Collections; 6 using System.Collections.Generic; 7 8 namespace 9 { 10 public interface ISystemContact 11 { 12 //获取所有联系人 13 List<String> GetSystemContact (); 14 //插入联系人 15 bool InsertContact(string nam

Android Content Provider简介

Content Provider是Android的四大组件之一,与Activity和Service相同,使用之前需要注册: Android系统中存在大量的应用,当不同的应用程序之间需要共享数据时,可以使用Content Provider来实现,因为它为存储和读取数据提供了统一的接口: (1)Android系统内置的许多数据都是使用Content Provider,然后供开发者调用,如音频,视频,图片,通讯录等: (2)当一个程序需要把自己的数据暴露给其他程序使用时,该程序就可以通过提供Conte

关于android contacts 数据库操作

Android中的联系人都保存在一个SQLite数据库中,有兴趣的可以使用adb直接pull 出来看一下里面的表和视图的结构, 它的路径为:adb pull /data/data/com.android.providers.contacts/databases/contacts2.db 待续--