- 浏览: 334873 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
package cn.itcast.contact; import java.util.ArrayList; import android.content.ContentProviderOperation; import android.content.ContentProviderResult; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.RawContacts; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.Contacts.Data; import android.test.AndroidTestCase; import android.util.Log; public class ContactTest extends AndroidTestCase { private static final String TAG = "ContactTest"; public void testGetAllContact() throws Throwable{ Uri uri = ContactsContract.Contacts.CONTENT_URI; ContentResolver contentResolver = this.getContext().getContentResolver(); Cursor cursor = contentResolver.query(uri, null, null, null, null); while(cursor.moveToNext()){ StringBuilder sb = new StringBuilder(); String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); sb.append("contactId=").append(contactId).append(",name=").append(name); Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); while(phones.moveToNext()){ String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER)); sb.append(",phone=").append(phoneNumber); } phones.close(); Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null); while (emails.moveToNext()) { String emailAddress = emails.getString(emails.getColumnIndex( ContactsContract.CommonDataKinds.Email.DATA)); sb.append(",emailAddress=").append(emailAddress); } emails.close(); Log.i(TAG, sb.toString()); } cursor.close(); } /** * 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId * 这时后面插入data表的依据,只有执行空值插入,才能使插入的联系人在通讯录里面可见 */ public void testInsert() { ContentValues values = new ContentValues(); //首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId Uri rawContactUri = this.getContext().getContentResolver().insert(RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); //往data表入姓名数据 values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);//内容类型 values.put(StructuredName.GIVEN_NAME, "李天山"); this.getContext().getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); //往data表入电话数据 values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); values.put(Phone.NUMBER, "13921009789"); values.put(Phone.TYPE, Phone.TYPE_MOBILE); this.getContext().getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); //往data表入Email数据 values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); values.put(Email.DATA, "liming@itcast.cn"); values.put(Email.TYPE, Email.TYPE_WORK); this.getContext().getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values); } //批量添加,处于同一个事务中 public void testSave() throws Throwable{ //文档位置:reference\android\provider\ContactsContract.RawContacts.html ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); int rawContactInsertIndex = ops.size(); ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(RawContacts.ACCOUNT_TYPE, null) .withValue(RawContacts.ACCOUNT_NAME, null) .build()); //文档位置:reference\android\provider\ContactsContract.Data.html ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.GIVEN_NAME, "赵薇") .build()); ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "13671323809") .withValue(Phone.TYPE, Phone.TYPE_MOBILE) .withValue(Phone.LABEL, "手机号") .build()); ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) .withValue(Email.DATA, "liming@itcast.cn") .withValue(Email.TYPE, Email.TYPE_WORK) .build()); ContentProviderResult[] results = this.getContext().getContentResolver() .applyBatch(ContactsContract.AUTHORITY, ops); for(ContentProviderResult result : results){ Log.i(TAG, result.uri.toString()); } } }
发表评论
-
Android中AsyncTask的简单用法
2012-01-13 16:00 1192在开发Android移动客户端的时候往往要使用多线程来进行操 ... -
Android应用的自动升级、更新模块的实现 .
2011-11-16 14:01 694http://www.eoeandroid.com/threa ... -
一个APK反编译利器Apktool
2011-11-16 13:54 1614一个APK反编译利器Apktool APK 本地化 ... -
自定义Android标题栏TitleBar布局
2011-11-14 14:13 1279很多网友发现自己Android程序的标题栏TitleBar区域 ... -
Android GPS获取地理位置 .
2011-11-14 14:11 881import android.app.Activity; i ... -
android ListView详解
2011-11-14 13:48 1082在android开发中ListView是比较常用的组件,它以列 ... -
Android之Content provider 详解
2011-11-14 13:35 2504Android是如何实现应用程序之间数据共享的?一个应用程序可 ... -
Android源码地址
2011-11-12 19:14 1072http://blog.csdn.net/ilittleone ... -
android之File
2011-11-11 22:39 20321:Fileservice package cn.itcas ... -
Android知识补漏
2011-11-09 22:33 01:AndroidManifiest.xml < ... -
深入剖析Android消息机制
2011-11-09 14:13 979在Android中,线程内部或者线程之间进行信息交互时经常会使 ... -
Android之Handler详解(四)
2011-11-09 14:00 1302d、自己创建新的线程,然后在新线程中创建Looper,主线程调 ... -
Android之Handler详解(三)
2011-11-09 13:58 1382c、将消息队列绑定到子线程上,主线程只管通过Handl ... -
Android之Handler详解(二)
2011-11-09 13:54 1692二:sendMessage版本的Handl ... -
Android之Handler详解(一)
2011-11-09 13:22 2325一个Handler允许你发送和处理消息(Message)以及 ... -
关于StartActivityForResult方法的使用
2011-10-31 17:11 1121根据方法名可知 这个方法是要得到启动后的Activity返回的 ... -
Android 悬浮Activity并可拖动(访悬浮歌词)
2011-10-24 16:23 2132天天动听, 这款Android手机上的音乐播放器,相信不少朋友 ... -
Android GWES
2011-10-24 16:13 1225第八章 Android GWES 8.1 View Syst ... -
Android系统服务-WindowManager
2011-10-24 16:10 1477WindowManager是Android中一个重要的服务 ... -
http通信
2011-10-15 17:31 1116HTTP(HyperText Transfer Proto ...
相关推荐
Android之通信录中的联系人操作代码
在Android平台上,获取通讯录中的联系人信息是常见的功能需求,尤其当需要处理与电子邮件相关的应用时。这个DEMO展示了如何有效地读取那些在联系人信息中设置了电子邮件地址的联系人。下面我们将深入探讨实现这一...
在Android平台上,获取通讯录联系人信息是常见的需求,尤其对于开发涉及社交功能的应用来说更是必不可少。本示例源码提供了实现这一功能的方法,帮助开发者深入理解如何在Android应用中读取并操作用户通讯录数据。 ...
本资料包“Android手机的通讯录联系人信息.zip”提供了Android应用开发的源码示例,帮助开发者深入理解如何在Android平台上操作和管理联系人数据。 首先,Android的通讯录功能是基于Content Provider构建的,...
3. **手机通讯录信息的UI适配**:在Android Studio中,我们可以使用布局文件(如XML)设计通讯录界面,一般包含一个ListView用于显示联系人列表。ListView是Android中用来展示大量数据的视图组件,每个列表项可以...
以上就是Android访问通讯录中的联系人和添加联系人的基本操作。实际开发中,还需要考虑权限动态申请、多线程访问和错误处理等问题。同时,Android API的不同版本可能会有一些细微的差异,需要根据目标设备的Android...
在Android系统中,管理通讯录是应用程序常见的功能之一,包括添加新联系人和删除现有联系人。本知识点将深入探讨如何实现这些操作。 首先,我们要理解Android中的联系人API。Android提供了一个Content Provider来...
本文将详细介绍一个基于adt-bundle-windows工具集开发的、完整的、可运行的Android通讯录系统,它涵盖了通讯录应用的核心功能:增加、删除、修改和查询联系人。 一、adt-bundle-windows与Android开发环境搭建 adt-...
Android提供了一套完整的API来访问和操作联系人数据。主要涉及`ContactsContract`类,它定义了一个内容提供者接口,允许应用读取和写入联系人信息。获取联系人通常分为以下步骤: - 请求权限:在AndroidManifest....
在Android开发中,获取联系人、SIM卡信息以及最近联系人列表是常见的需求。下面将详细解释这些概念和实现方式。 一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到...
在数据库操作中,需使用ContentValues对象来封装数据,通过SQLiteOpenHelper子类进行增删查改操作。 2. **UI设计**:考虑用户体验,设计合理的界面布局,如使用ListView或RecyclerView展示联系人列表,提供拨号键盘...
点击通讯录中一个已存在的联系人,进入编辑界面,可修改联系人的资料或进行删除操作,完成后返回到主界面。 查找联系人 点击通讯录选项菜单中的“查找联系人”菜单项,进入搜索界面,能通过姓名、手机号码、单位名称...
首先,我们要明白在Android中操作联系人数据需要`READ_CONTACTS`和`WRITE_CONTACTS`权限。在AndroidManifest.xml文件中,我们需要添加以下代码来获取这些权限: ```xml <uses-permission android:name="android....
综上所述,这个基于Android的通讯录设计项目涵盖了Android开发的多个核心领域,包括数据库操作、UI设计、组件通信、权限管理以及图像处理等。通过这样的项目实践,开发者可以深入理解Android应用的架构和工作原理,...
下面将详细介绍Android平台中处理通讯录联系人信息的关键知识点。 首先,Android提供了`ContactsContract`框架,这是一个用于访问和操作设备上联系人数据的API。开发者可以通过这个框架来获取联系人的姓名、电话...
在Android开发中,实现“Android手机通讯录快速筛选联系人”的功能是一项常用且实用的技术。这一功能主要涉及到了ListView的使用、数据排序以及触摸事件处理等多个知识点。下面将详细讲解这些核心内容。 首先,`...
在这个实例中,我们将深入探讨如何使用Android通讯录的内容提供者来查询和添加联系人。 一、Android内容提供者基础 内容提供者是一个实现了ContentProvider类的组件,它负责存储、检索以及更新应用程序的数据。每个...
【基于Android Studio开发的安卓通讯录管理App】是一款利用谷歌提供的Android Studio集成开发环境构建的应用程序,它专注于管理和操作用户的联系人数据。该应用涵盖了多种关键功能,包括新增联系人、编辑现有联系人...
【Android手机通讯录】是一个基于Android平台的项目,旨在实现对手机中联系人的管理功能。这个项目最初是在ADT(Android Developer Tools)环境下构建的,ADT是早期Android开发者常用的集成开发环境。随着时间的推移...
在源码中,我们可以看到如何定义和注册BroadcastReceiver,以及响应各种联系人操作的逻辑。 5. **同步与账户管理**:Android 2.2支持多种同步机制,包括Google账户和其他第三方账户。源码展示了如何集成SyncAdapter...