`

Android 之往通讯录中添加数据和查询数据【转】

阅读更多

http://blog.csdn.net/hosterZhu/archive/2011/01/20/6154461.aspx

 

 首先 我们要在E:\android-sdk-windows\platforms\android-8\sources\ContactsProvider  找到源码 !

 因为android自带的通讯录也是通过ContentProvider对外共享数据。

 贴点源码:

 URI  这是ContactsProvider2.java

 

  1. static {  
  2.         // Contacts URI matching table  
  3.         final UriMatcher matcher = sUriMatcher;  
  4.         matcher.addURI(ContactsContract.AUTHORITY, "contacts", CONTACTS);  
  5.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/#", CONTACTS_ID);  
  6.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/data", CONTACTS_DATA);  
  7.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions",  
  8.                 AGGREGATION_SUGGESTIONS);  
  9.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/suggestions/*",  
  10.                 AGGREGATION_SUGGESTIONS);  
  11.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/#/photo", CONTACTS_PHOTO);  
  12.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/filter/*", CONTACTS_FILTER);  
  13.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*", CONTACTS_LOOKUP);  
  14.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/lookup/*/#", CONTACTS_LOOKUP_ID);  
  15.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/as_vcard/*", CONTACTS_AS_VCARD);  
  16.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/as_multi_vcard/*",  
  17.                 CONTACTS_AS_MULTI_VCARD);  
  18.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/strequent/", CONTACTS_STREQUENT);  
  19.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/strequent/filter/*",  
  20.                 CONTACTS_STREQUENT_FILTER);  
  21.         matcher.addURI(ContactsContract.AUTHORITY, "contacts/group/*", CONTACTS_GROUP);  
  22.         matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts", RAW_CONTACTS);  
  23.         matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#", RAW_CONTACTS_ID);  
  24.         matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/data", RAW_CONTACTS_DATA);  
  25.         matcher.addURI(ContactsContract.AUTHORITY, "raw_contacts/#/entity", RAW_CONTACT_ENTITY_ID);  
  26.         matcher.addURI(ContactsContract.AUTHORITY, "raw_contact_entities", RAW_CONTACT_ENTITIES);  
  27.         matcher.addURI(ContactsContract.AUTHORITY, "data", DATA);  
  28.         matcher.addURI(ContactsContract.AUTHORITY, "data/#", DATA_ID);  
  29.         matcher.addURI(ContactsContract.AUTHORITY, "data/phones", PHONES);  
  30.         matcher.addURI(ContactsContract.AUTHORITY, "data/phones/#", PHONES_ID);  
  31.         matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter", PHONES_FILTER);  
  32.         matcher.addURI(ContactsContract.AUTHORITY, "data/phones/filter/*", PHONES_FILTER);  
  33.         matcher.addURI(ContactsContract.AUTHORITY, "data/emails", EMAILS);  
  34.         matcher.addURI(ContactsContract.AUTHORITY, "data/emails/#", EMAILS_ID);  
  35.         matcher.addURI(ContactsContract.AUTHORITY, "data/emails/lookup/*", EMAILS_LOOKUP);  
  36.         matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter", EMAILS_FILTER);  
  37.         matcher.addURI(ContactsContract.AUTHORITY, "data/emails/filter/*", EMAILS_FILTER);  
  38.         matcher.addURI(ContactsContract.AUTHORITY, "data/postals", POSTALS);  
  39.         matcher.addURI(ContactsContract.AUTHORITY, "data/postals/#", POSTALS_ID);  
  40.         matcher.addURI(ContactsContract.AUTHORITY, "groups", GROUPS);  
  41.         matcher.addURI(ContactsContract.AUTHORITY, "groups/#", GROUPS_ID);  
  42.         matcher.addURI(ContactsContract.AUTHORITY, "groups_summary", GROUPS_SUMMARY);  
  43.         matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH, SYNCSTATE);  
  44.         matcher.addURI(ContactsContract.AUTHORITY, SyncStateContentProviderHelper.PATH + "/#",  
  45.                 SYNCSTATE_ID);  
  46.         matcher.addURI(ContactsContract.AUTHORITY, "phone_lookup/*", PHONE_LOOKUP);  
  47.         matcher.addURI(ContactsContract.AUTHORITY, "aggregation_exceptions",  
  48.                 AGGREGATION_EXCEPTIONS);  
  49.         matcher.addURI(ContactsContract.AUTHORITY, "aggregation_exceptions/*",  
  50.                 AGGREGATION_EXCEPTION_ID);  
  51.         matcher.addURI(ContactsContract.AUTHORITY, "settings", SETTINGS);  
  52.         matcher.addURI(ContactsContract.AUTHORITY, "status_updates", STATUS_UPDATES);  
  53.         matcher.addURI(ContactsContract.AUTHORITY, "status_updates/#", STATUS_UPDATES_ID);  
  54.         matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY,  
  55.                 SEARCH_SUGGESTIONS);  
  56.         matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*",  
  57.                 SEARCH_SUGGESTIONS);  
  58.         matcher.addURI(ContactsContract.AUTHORITY, SearchManager.SUGGEST_URI_PATH_SHORTCUT + "/*",  
  59.                 SEARCH_SHORTCUT);  
  60.         matcher.addURI(ContactsContract.AUTHORITY, "live_folders/contacts",  
  61.                 LIVE_FOLDERS_CONTACTS);  
  62.         matcher.addURI(ContactsContract.AUTHORITY, "live_folders/contacts/*",  
  63.                 LIVE_FOLDERS_CONTACTS_GROUP_NAME);  
  64.         matcher.addURI(ContactsContract.AUTHORITY, "live_folders/contacts_with_phones",  
  65.                 LIVE_FOLDERS_CONTACTS_WITH_PHONES);  
  66.         matcher.addURI(ContactsContract.AUTHORITY, "live_folders/favorites",  
  67.                 LIVE_FOLDERS_CONTACTS_FAVORITES);  
  68.         matcher.addURI(ContactsContract.AUTHORITY, "provider_status", PROVIDER_STATUS);  
  69.     }  

 

项目清单文件中 有ContactsProvider2的配置

 

  1. <provider android:name="ContactsProvider2" android:authorities="contacts;com.android.contacts" android:label="@string/provider_label" android:multiprocess="false" android:readPermission="android.permission.READ_CONTACTS" android:writePermission="android.permission.WRITE_CONTACTS">  
  2.   <path-permission android:pathPrefix="/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH" />   
  3. padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px
    分享到:
    评论

相关推荐

    android 往通讯录中添加和删除联系人

    在Android系统中,管理通讯录是应用程序常见的功能之一,包括添加新联系人和删除现有联系人。本知识点将深入探讨如何实现这些操作。 首先,我们要理解Android中的联系人API。Android提供了一个Content Provider来...

    Android Studio实现通讯录

    安卓通讯录主要实现了对联系人信息(姓名和电话)的增加、删除、修改和查询功能,系统通过`SQLite`数据库来存储数据。系统有欢迎、注册和登录页面,先注册后使用。主页面包含`对联系人信息增删改查`这四种功能:在...

    android实战 绿豆通讯录(android studio源程序工程)

    《绿豆通讯录》是Android移动开发领域的一个经典实践项目,主要针对初学者设计,旨在帮助他们更好地理解和掌握Android Studio的使用以及Android应用的基本构建过程。这个项目覆盖了多个关键知识点,下面将对这些核心...

    Android studio 安卓通讯录开发

    本项目以“Android studio 安卓通讯录开发”为主题,旨在帮助初学者掌握Android应用的基本开发流程,特别是涉及到用户交互、数据存储以及登录验证等方面的知识。 首先,通讯录开发涉及的主要技术点包括: 1. **...

    Android studio—读取通讯录

    以上就是Android Studio中读取通讯录的基本操作,涵盖了权限管理、数据查询、Adapter使用等多个关键知识点。通过这个过程,开发者可以轻松地在自己的应用中集成类似的功能,提升用户体验。在实际开发中,还可能需要...

    Android Studio简易通讯录界面.rar

    1. **获取手机通讯录信息**:在Android中,通讯录数据存储在SQLite数据库中,可以通过ContentResolver和ContactsContract类来访问。首先,我们需要申请读取联系人权限(READ_CONTACTS)。然后,使用ContentResolver...

    Android 完整的通讯录项目源码.rar

    通过这个项目,你可以了解到如何在Android环境中构建一个功能完备的通讯录系统,包括数据存储、用户界面设计、数据查询和编辑等多个方面。 首先,通讯录应用的核心在于数据管理。在这个项目中,你将接触到SQLite...

    Android学习之手机通讯录

    本项目“Android学习之手机通讯录”聚焦于使用ContentProvider操作手机内置的通讯录,包括查询、添加和删除联系人。尽管删除功能存在不足,但这个练习仍能帮助我们深入理解ContentProvider的工作原理。 首先,我们...

    Android开发手机通讯录

    在Android平台上,开发一款手机通讯录应用涉及到许多关键技术和组件,包括用户界面设计、数据存储、权限管理以及安全措施。接下来,我们将详细探讨这些知识点。 首先,**用户界面设计**是任何应用程序的核心部分。...

    使用android通讯录中的内容提供者实例

    在这个实例中,我们将深入探讨如何使用Android通讯录的内容提供者来查询和添加联系人。 一、Android内容提供者基础 内容提供者是一个实现了ContentProvider类的组件,它负责存储、检索以及更新应用程序的数据。每个...

    android 自定义头像通讯录

    Android系统的联系人应用是系统核心组件之一,它通过ContentProvider接口暴露了数据操作API,允许其他应用读取和修改通讯录数据。在这个项目中,开发者扩展了这一功能,添加了自定义头像的功能。ContentProvider是...

    Android-Android手机通讯录

    以上就是Android手机通讯录项目中涉及的核心技术点,开发者需要具备扎实的Android基础知识,才能有效地开发和维护这样的应用。随着Android系统的不断迭代,开发者也需要持续学习新的开发工具和最佳实践,以保持...

    AndroidStudio安卓课设-简易通讯录

    开发者需要创建数据库表结构,执行SQL语句进行数据的插入、查询、更新和删除。 **3. Activity和Intent** - **Activity**:在Android中,Activity代表一个可视化的用户界面,它是应用与用户交互的主要入口。在这个...

    基于Android的手机通讯录设计书

    通过创建一个基于Android的通讯录应用,用户可以方便地执行添加、查看、修改和删除联系人操作,以及拨打电话、发送短信和查询联系人。此外,软件提供独特的数据备份和恢复功能,允许用户将联系人信息导出到文本文件...

    基于Android 的通讯录设计

    在这个通讯录应用中,ContentProvider可以作为一个接口,使得其他应用能够访问和修改通讯录数据。开发者需要自定义ContentProvider,实现Uri匹配、数据查询、插入、更新和删除等方法。 3. **AndroidManifest.xml...

    Android 读取通讯录过滤 自动补全

    下面将详细介绍如何在Android中读取通讯录数据并构建自动补全功能。 首先,我们需要获取用户的权限。在AndroidManifest.xml文件中添加读取联系人的权限: ```xml &lt;uses-permission android:name="android....

    android 通讯录(A-Z)带可模糊查询搜索框

    这篇教程“android 通讯录(A-Z)带可模糊查询搜索框”着重讲解如何创建一个能够进行字母索引排序和模糊查询的通讯录界面。在这个过程中,开发者会接触到Android的UI设计、数据处理以及搜索功能的实现。 首先,UI...

    Android通讯录附搜索及字母索引Demo

    综上所述,"Android通讯录附搜索及字母索引Demo"涵盖了Android开发中的多个重要概念和技术,对于想要深入学习Android应用开发,尤其是涉及数据存储和UI交互的开发者来说,这是一个宝贵的实践资源。通过这个Demo,...

    android开发的手机通讯录(毕业设计,课程设计)

    在Android平台上开发一个手机通讯录系统,是许多开发者学习Android编程时的经典案例,也是毕业设计或课程设计中的常见课题。这个项目涉及到多个Android开发的关键知识点,包括用户界面(UI)设计、SQLite数据库管理...

    android 实现手机通讯录代码

    总之,实现一个简单的Android通讯录应用需要理解Android的基本组件,掌握SQLite数据库操作,设计用户友好的界面,并实现核心的添加、查询、修改和删除功能。通过这个过程,你不仅可以熟悉Android开发,还能提升...

Global site tag (gtag.js) - Google Analytics