Android保存联系人
上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。
因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多其实看下如何读取的就会了。直接上源码:
/** * 添加联系人到本机 * * @param context * @param contact * @return */ public static boolean addContact(Context context, ContactEntity contact) { try { ContentValues values = new ContentValues(); // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId Uri rawContactUri = context.getContentResolver().insert( RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); // 向data表插入姓名数据 String name = contact.getName(); if (name != "") { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); values.put(StructuredName.GIVEN_NAME, name); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } // 向data表插入电话数据 String mobile_number = contact.getPhone1().get(0); if (mobile_number != "") { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); values.put(Phone.NUMBER, mobile_number); values.put(Phone.TYPE, Phone.TYPE_MOBILE); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } // 向data表插入Email数据 String email = contact.getEmail(); if (email != "") { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); values.put(Email.DATA, email); values.put(Email.TYPE, Email.TYPE_WORK); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } // 向data表插入QQ数据 String qq = contact.getQq(); if (qq != "") { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); values.put(Im.DATA, qq); values.put(Im.PROTOCOL, Im.PROTOCOL_QQ); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } // 向data表插入备注信息 String describe = contact.getDescribe(); if (describe != "") { values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE); values.put(Note.NOTE, describe); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } // 向data表插入头像数据 Bitmap sourceBitmap = BitmapFactory.decodeResource( context.getResources(), R.drawable.icon); final ByteArrayOutputStream os = new ByteArrayOutputStream(); // 将Bitmap压缩成PNG编码,质量为100%存储 sourceBitmap.compress(Bitmap.CompressFormat.PNG, 100, os); byte[] avatar = os.toByteArray(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE); values.put(Photo.PHOTO, avatar); context.getContentResolver().insert( ContactsContract.Data.CONTENT_URI, values); } catch (Exception e) { return false; } return true; }
相关推荐
"Android保存联系人到通讯录的方法" Android保存联系人到通讯录的方法是Android开发中的一种常见操作,这篇文章将详细介绍如何将联系人数据保存到本机通讯录中。 首先,我们需要了解Android通讯录的结构。 Android...
对于保存联系人,你需要在`AndroidManifest.xml`文件中添加`READ_CONTACTS`和`WRITE_CONTACTS`权限: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:...
在这个通讯录应用中,SQLite被用来保存联系人的姓名、电话号码等信息。开发者需要创建数据库表结构,执行SQL语句进行数据的插入、查询、更新和删除。 **3. Activity和Intent** - **Activity**:在Android中,...
3. **通话功能**:从通讯录选择联系人后,可以直接拨打电话,同时展示与该联系人的通话记录。 4. **短信功能**:支持发送和接收短信,可以快速选择已有联系人发送信息,同时显示信息记录。 5. **群组管理**:在...
在这个通讯录应用中,可能包含了多个Activity(如主界面、联系人详情界面)和Fragment,用于展示不同的视图。布局文件可能包括ListView或RecyclerView来显示联系人列表,EditText用于输入搜索查询,以及各种Button...
Android系统提供了一个名为Contacts Provider的API,它是一个内容提供者(Content Provider),负责管理应用程序间的数据共享,尤其是用户存储的联系人信息。要获取通讯录,我们需要在客户端应用中获取ContentResolver...
这个项目涉及到多个Android开发的关键知识点,包括用户界面(UI)设计、SQLite数据库管理、联系人API的使用以及事件处理等。下面将对这些关键点进行深入讲解。 1. **用户界面设计**:在Android中,UI设计主要通过...
本教程将引导你如何构建一个基础的通讯录应用,涵盖添加、删除、修改和查询联系人等功能。 首先,你需要了解Android的基本架构,包括Activity、Intent、BroadcastReceiver等组件。Activity是应用程序与用户交互的...
例如,`navigator.contacts.find`用于获取所有联系人,`navigator.contacts.create`用于新建联系人,`navigator.contacts.update`用于更新联系人信息,`navigator.contacts.remove`用于删除联系人。 5. **数据同步*...
在这个项目中,SQLite用于持久化保存联系人的信息,包括姓名、电话号码、头像和备注。开发者需要创建数据库表结构,定义字段,以及编写SQL语句进行数据的增、删、查、改操作。此外,Android提供了SQLiteOpenHelper类...
1. 使用Android Studio内置的布局编辑器(XML)设计联系人列表界面,通常包括一个ListView或RecyclerView来展示联系人。 2. 每个联系人条目应包含姓名、电话号码等关键信息,可以使用TextView和ImageView等组件来...
- **联系人管理**:用户可以通过通讯录功能保存、编辑和删除联系人的详细信息,包括姓名、电话号码、电子邮件地址等。此外,用户可以直接从联系人列表中拨打电话和发送短信。 - **搜索功能**:系统支持按索引条件...
开发者可以使用这些API来获取系统中的联系人数据,或者将自定义的联系人数据同步到系统通讯录中。例如,查询所有联系人的代码片段可能如下: ```java Uri contactsUri = ContactsContract.Contacts.CONTENT_URI; ...
在iOS开发中,类似的功能可以使用UITableView展示联系人,利用`MFPPhoneNumberHelper`拨打电话,以及使用`ABAddressBook`框架(iOS 9及以上版本需使用`Contacts`框架)来保存联系人。 以上就是关于"号码拨号,保存...
这个工具允许用户将他们的联系人数据导入到Android设备中,或者将设备上的联系人导出为纯文本(TXT)格式,便于备份或在不同设备间迁移数据。 首先,我们来看一下这个应用的核心功能。在Android中,系统提供了...
用户会看到一个新联系人界面,已预填充了从二维码中提取的信息,然后他们可以选择保存到通讯录。 在实际应用中,你可能还需要处理二维码扫描、解析和异常处理等其他方面的问题。总的来说,生成并保存二维码名片涉及...
这款应用的源码提供了深入了解Android系统如何处理联系人数据、UI设计、数据存储、搜索功能以及性能优化等方面的机会。以下是对这些核心知识点的详细阐述: 1. **Android SDK与环境搭建**:开发Android应用首先需要...
之后,使用`ContentResolver.insert()`或`update()`方法将数据保存到系统联系人库。 6. **联系人详情页**: 为每个联系人创建一个详情页面,展示他们的姓名、电话号码、电子邮件等信息。可以通过点击列表项跳转到...
Android系统中的通讯录存储在联系人提供者(Contacts Provider)中,通过内容提供者(Content Provider)的方式来访问。我们通常通过Cursor来查询和操作数据。Android SDK提供了ContactsContract类,用来访问通讯录...