Android 获取手机联系人实例代码详解
ContactActivity extends Activity { private ListView contactListView; private ArrayList<HashMap<String, String>> contactList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contact_activity); contactListView = (ListView) findViewById(R.id.lv_contacts); contactList = new ArrayList<HashMap<String, String>>(); // 获取手机联系人 fetchContacts(); // 设置列表适配器 SimpleAdapter adapter = new SimpleAdapter(this, contactList, R.layout.contact_item, new String[]{"name", "number"}, new int[]{R.id.tv_contact_name, R.id.tv_contact_number}); contactListView.setAdapter(adapter); // 点击事件监听 contactListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { HashMap<String, String> contact = contactList.get(position); String selectedNumber = contact.get("number"); Intent resultIntent = new Intent(); resultIntent.putExtra("phone", selectedNumber); setResult(Activity.RESULT_OK, resultIntent); finish(); } }); } /** * 获取手机联系人数据 */ private void fetchContacts() { ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 处理多个电话号码的情况,只取第一个 if (number.contains(";")) { number = number.split(";")[0]; } // 去除特殊字符并格式化电话号码 number = number.replaceAll("\\D", ""); HashMap<String, String> contactMap = new HashMap<>(); contactMap.put("name", name); contactMap.put("number", number); contactList.add(contactMap); } } if (cursor != null) { cursor.close(); } } } 在上述代码中,我们展示了如何在Android应用中获取手机联系人的实例。主要分为以下几个步骤: 1. 在`GetPhoneActivity`中,创建了一个`EditText`用于显示选中的电话号码和一个`Button`触发获取联系人操作。当用户点击按钮时,启动`ContactActivity`并使用`startActivityForResult`来处理返回的结果。 2. `ContactActivity`中,首先设置布局,并初始化一个`ListView`用于展示联系人列表。接着,我们通过`fetchContacts`方法获取联系人数据。 3. `fetchContacts`方法使用`ContentResolver`查询`ContactsContract`中的`CommonDataKinds.Phone.CONTENT_URI`,获取到所有联系人的数据。遍历`Cursor`,获取每个联系人的名称和电话号码。注意处理多个电话号码的情况,这里只取第一个号码。最后将姓名和号码添加到`contactList`中。 4. 用`SimpleAdapter`创建一个列表适配器,将`contactList`绑定到`ListView`,并在`OnItemClickListener`中处理点击事件。当用户选择一个联系人后,将选中的电话号码放入`Intent`中并通过`setResult`返回到`GetPhoneActivity`。 5. `GetPhoneActivity`中的`onActivityResult`方法接收`ContactActivity`返回的数据。如果结果码为`RESULT_OK`,则从`Intent`中获取电话号码,清理特殊字符并显示在`EditText`中。 以上代码实现了一个基本的获取手机联系人并显示在列表中的功能,但实际应用中可能需要考虑更多细节,如权限管理(需要在AndroidManifest.xml中声明读取联系人权限`<uses-permission android:name="android.permission.READ_CONTACTS" />`),用户隐私保护,以及对不同设备和Android版本的兼容性问题。























- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 物联网+智慧平台项目融资计划.pptx
- Sa-Token-Java资源
- 山东轻工业学院网络用户手册.doc
- 学习]网络营销的方法与策略.ppt
- 2023年西南大学网络与继续教育学院土木工程专业工程地质大作业答案3月.doc
- 构建身边的网络.pdf
- 综合布线资格认证.doc
- 我国银行财务管理信息化思考.doc
- (推荐下载)第二节--中国生物医学-文献数据库2013.5.2.docx
- 教育信息化校本培训方案.doc
- 楼宇自动化控制系统入门.ppt
- 胃肠道间质瘤GIST综合治疗经验分享.pptx
- ArcGIS影像配准及矢量化.doc
- 雅戈尔服饰有限公司营销网络建设项目建议书最终版.pptx
- java毕业设计,航空信息管理系统
- 项目管理部消防安全自查报告.docx


