### Android 2.2 通讯录操作源代码详解 #### 一、概述 本文将详细介绍一个基于Android 2.2版本的通讯录操作示例源代码。该代码实现了读取、添加、删除以及更新联系人的功能。对于学习Android平台上的通讯录操作来说,这是一个很好的实践案例。 #### 二、关键类与接口 1. **`Activity`**:是Android应用中的四大组件之一,负责处理用户交互,并在屏幕上展示UI。本例中主要用到的是`TestContacts`类,它继承自`Activity`。 2. **`ContentResolver`**:用于访问Android系统中的内容提供者(Content Providers),包括联系人、日历等数据。 3. **`Cursor`**:用于遍历查询结果集。 4. **`Intent`**:用于启动新的Activity或服务。 #### 三、代码解析 ##### 1. 基础设置 ```java public class TestContacts extends Activity { TextView myTextView; String str; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTitle(R.string.ReadContact); } } ``` - `TestContacts`类继承自`Activity`,并在`onCreate()`方法中设置了主界面布局和标题。 - `TextView`用于显示联系人信息。 - `String str`用于存储字符串变量。 ##### 2. 菜单选项 ```java @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_add: Intent intent = new Intent(); intent.setClass(this, NewContactActivity.class); startActivity(intent); return true; case R.id.menu_delete: Intent intent = new Intent(); intent.setClass(this, DeleteContactActivity.class); startActivity(intent); return true; case R.id.menu_update: Intent intent = new Intent(); intent.setClass(this, UpdateContactActivity.class); startActivity(intent); return true; case R.id.menu_exit: finish(); return true; } return false; } ``` - `onCreateOptionsMenu()`用于创建菜单,通过`inflate()`方法加载菜单资源。 - `onOptionsItemSelected()`处理菜单项点击事件: - **添加联系人** (`R.id.menu_add`):启动`NewContactActivity`。 - **删除联系人** (`R.id.menu_delete`):启动`DeleteContactActivity`。 - **更新联系人** (`R.id.menu_update`):启动`UpdateContactActivity`。 - **退出** (`R.id.menu_exit`):关闭当前Activity。 ##### 3. 读取联系人 ```java protected void onResume() { super.onResume(); // 初始化TextView myTextView = (TextView) findViewById(R.id.myTextView); // 使用ContentResolver获取联系人数据 ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { // 获取联系人姓名 String displayName = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); // 获取联系人电话号码 String number = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 将联系人信息拼接成字符串并显示 str += "姓名:" + displayName + "\n电话:" + number + "\n\n"; } // 显示联系人信息 myTextView.setText(str); } cur.close(); } ``` - 在`onResume()`方法中初始化`TextView`并使用`ContentResolver`查询联系人数据。 - 查询`ContactsContract.CommonDataKinds.Phone.CONTENT_URI`以获取联系人信息。 - 使用`Cursor`遍历查询结果,并提取联系人姓名和电话号码。 - 将获取到的信息显示在`TextView`中。 #### 四、总结 本文详细介绍了如何在Android 2.2版本中进行通讯录操作,包括读取、添加、删除和更新联系人。通过实际代码示例,我们可以了解到如何利用Android SDK提供的API实现这些功能。这对于初学者来说是一个很好的起点,也为进一步深入研究Android平台提供了基础。
Activty部分:
TestContacts.java:
1. package waga.android.study.TestContacts;
2. import android.app.Activity;
3. import android.content.ContentResolver;
4. import android.content.Intent;
5. import android.database.Cursor;
6. import android.os.Bundle;
7. import android.provider.ContactsContract;
8. import android.provider.ContactsContract.RawContacts;
9. import android.view.Menu;
10. import android.view.MenuInflater;
11. import android.view.MenuItem;
12. import android.widget.TextView;
13. public class TestContacts extends Activity
14. {
15. TextView myTextView;
16. String str;
17. @Override
18. public void onCreate(Bundle savedInstanceState)
19. {
20. super.onCreate(savedInstanceState);
21. setContentView(R.layout.main);
22. setTitle(R.string.ReadContact);
23. }
24.
25. // 创建选项菜单
27. public boolean onCreateOptionsMenu(Menu menu)
28. {
29. super.onCreateOptionsMenu(menu);
30. MenuInflater inflater = getMenuInflater();
31. inflater.inflate(R.layout.menu, menu);
32.
33. return true;
34. }
35. // 响应选项菜单
36. @Override
37. public boolean onOptionsItemSelected(MenuItem item)
38. {
39. switch (item.getItemId())
40. {
41. // 新建联系人
42. case R.id.menu_add:
43. {
44. // new一 个Intent对 象 , 并指定class
45. Intent intent = new Intent();
46. intent.setClass(this, NewContactActivity.class);
47. startActivity(intent);
48. return true;
49. }
50.
51. // 删除联系人
52. case R.id.menu_delete:
53. {
54. // new一 个Intent对 象 , 并指定class
55. Intent intent = new Intent();
剩余16页未读,继续阅读
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
- (源码)基于C语言的操作系统实验项目.zip
- (源码)基于C++的分布式设备配置文件管理系统.zip
- (源码)基于ESP8266和Arduino的HomeMatic水表读数系统.zip
- 1
- 2
前往页