Android中ContentProvider实现联系人的读写
来源:互联网 发布:中国移动宽带测速软件 编辑:程序博客网 时间:2024/05/16 07:49
1.修改menu/main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item_add" android:orderInCategory="100" android:showAsAction="never" android:title="添加"/><item android:id="@+id/item_exit" android:orderInCategory="100" android:showAsAction="never" android:title="退出"/></menu>2.修改界面布局activity_main.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textview_userInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>3.编码实现MainActivity
import android.app.Activity;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.database.Cursor;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.provider.ContactsContract.CommonDataKinds;import android.provider.ContactsContract.CommonDataKinds.Email;import android.provider.ContactsContract.CommonDataKinds.Phone;import android.provider.ContactsContract.CommonDataKinds.StructuredName;import android.provider.ContactsContract.Contacts;import android.provider.ContactsContract.Data;import android.provider.ContactsContract.RawContacts;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {TextView userInfoTextView;MenuItem addItem;MenuItem exitItem;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);userInfoTextView=(TextView) findViewById(R.id.textview_userInfo);addItem=(MenuItem) findViewById(R.id.item_add);exitItem=(MenuItem) findViewById(R.id.item_exit);//调用getContactInfo()方法获取联系人的信息String result=getContactInfo();userInfoTextView.setTextColor(Color.BLUE);userInfoTextView.setText("记录\t名字\t电话\n"+result);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch(item.getItemId()){case R.id.item_add:addContact();String result=getContactInfo();userInfoTextView.setTextColor(Color.BLUE);userInfoTextView.setText("记录\t名字\t电话\n"+result);break;case R.id.item_exit:MainActivity.this.finish();}return true;}public String getContactInfo(){String result="";ContentResolver resolver=getContentResolver();//查询联系人Cursor cursor=resolver.query(Contacts.CONTENT_URI, null, null, null, null);int idIndex=cursor.getColumnIndex(Contacts._ID);// 取得联系人名字 (显示出来的名字),实际内容在 ContactsContract.Contacts中int nameIndex=cursor.getColumnIndex(Contacts.DISPLAY_NAME);for (cursor.moveToFirst();(!cursor.isAfterLast());cursor.moveToNext()) {//获取联系人IDString contactId =cursor.getString(idIndex);result=result+contactId+"\t\t\t";result=result+cursor.getString(nameIndex)+"\t\t\t"; // 根据联系人ID查询对应的电话号码 Cursor phoneNumbers = resolver.query(CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); // 取得电话号码(可能存在多个号码) while (phoneNumbers.moveToNext()) { String strPhoneNumber = phoneNumbers.getString(phoneNumbers.getColumnIndex(CommonDataKinds.Phone.NUMBER)); result=result+strPhoneNumber+"\t\t\t"; } phoneNumbers.close();// 根据联系人ID查询对应的email Cursor emails = resolver.query(CommonDataKinds.Email.CONTENT_URI, null, CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null); // 取得email(可能存在多个email) while (emails.moveToNext()) { String strEmail = emails.getString(emails.getColumnIndex(CommonDataKinds.Email.DATA)); result=result+strEmail+"\t\t\t"; } emails.close(); result=result+"\n";}cursor.close();return result;}public void addContact(){// 创建一个空的ContentValues ContentValues values = new ContentValues(); // 向RawContacts.CONTENT_URI执行一个空值插入, // 目的是获取系统返回的rawContactId Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values); long rawContactId = ContentUris.parseId(rawContactUri); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); // 设置内容类型 values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); // 设置联系人名字 values.put(StructuredName.GIVEN_NAME, "jCuckoo"); // 向联系人URI添加联系人名字 getContentResolver().insert(Data.CONTENT_URI, values); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); // 设置联系人的电话号码 values.put(Phone.NUMBER, "1234567890"); // 设置电话类型 values.put(Phone.TYPE, Phone.TYPE_MOBILE); // 向联系人电话号码URI添加电话号码 getContentResolver().insert(Data.CONTENT_URI, values); values.clear(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); // 设置联系人的Email地址 values.put(Email.DATA, "cc@qq.com"); // 设置该电子邮件的类型 values.put(Email.TYPE, Email.TYPE_WORK); // 向联系人Email URI添加Email数据 getContentResolver().insert(Data.CONTENT_URI, values); Toast.makeText(MainActivity.this , "联系人数据添加成功" , 8000) .show(); }}4.修改AndroidManifest.xml联系人读写权限
<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>
- Android中ContentProvider实现联系人的读写
- android中ContentProvider实现联系人的读取和插入
- 操作系统的ContentProvider 读写联系人
- Android 中ContentProvider的用法及用ContentProvider访问联系人
- Android 中ContentProvider的用法及用ContentProvider访问联系人
- Android--操作联系人的ContentProvider
- ContentProvider之读写联系人
- Android学习笔记十七.使用ContentProvider实现数据共享(四).操作系统(联系人)的ContentProvider
- android基础总结篇之六:ContentProvider之读写联系人
- Android中ContentProvider的实现及定义自己的ContentProvider
- Android中ContentProvider的实现及定义自己的ContentProvider
- 本地联系人的ContentProvider
- Android中ContentProvider组件详解 .(查找sd卡上的歌曲和联系人)
- Android在sd卡中读写联系人
- Android中通过ContentProvider来获取系统联系人
- 基础总结篇:ContentProvider之读写联系人
- 利用ContentProvider机制读写联系人信息。
- ContentProvider读写联系人列表以及权限处理
- test
- AVL树
- 中国高铁综合技术不成熟
- 用wpa_cli工具时候报错
- 红黑树 RBT (Red Black Tree)
- Android中ContentProvider实现联系人的读写
- 搜索引擎技术之概要预览
- tomcat启动startup.bat一闪而过
- Spring学习之——依赖注入(下)
- Connection Timeout Using LINQ DataContext
- Architect thinking
- Activity生命周期
- 广度优先搜索算法(Breadth-First-Search)
- 深度优先搜索算法(Depth-First-Search)