getAllContants--获取手机联系人列表

2024-08-31 23:58

本文主要是介绍getAllContants--获取手机联系人列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置文件

activity_main.xml(布局文件)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditTextandroid:id="@+id/et_main_number"android:layout_width="match_parent"android:layout_height="wrap_content"></EditText><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择联系人" android:onClick="selectPersons"/>
</LinearLayout>

activity_second.xml(listview布局)

<ListView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/lv_list_persons" >
</ListView>

person_item.xml(每个联系人条目布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_item_person_name"android:layout_width="100dp"android:layout_height="wrap_content"android:text="TextView" android:textSize="20sp"/><TextViewandroid:id="@+id/tv_item_person_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView" android:textSize="20sp"/>
</LinearLayout>

MainActivity.java

package com.example.l09_app;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;public class MainActivity extends Activity {private EditText et_main_number;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取号码框et_main_number = (EditText) findViewById(R.id.et_main_number);}public void selectPersons(View view) {// 带回调的启动startActivityForResult(new Intent(this, PersonListActivity.class), 1);}// 数据的回显@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 1 && resultCode == 2) {String number = data.getStringExtra("number");et_main_number.setText(number);}}
}

PersonListActivity.java

package com.example.l09_app;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;public class PersonListActivity extends Activity implements OnItemClickListener {ListView lv_list_persons;// 成员变量初始化data,后面内部类中使用private List<Map<String, String>> data = new ArrayList<Map<String, String>>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);// 获得lv_list_persons---listview视图lv_list_persons = (ListView) findViewById(R.id.lv_list_persons);// 准备数据---content://com.android.contacts/data/phonesUri uri = Phone.CONTENT_URI;String[] projection = { Phone.DISPLAY_NAME, Phone.NUMBER };Cursor cursor = getContentResolver().query(uri, projection, null, null,null);while (cursor.moveToNext()) {String name = cursor.getString(0);String number = cursor.getString(1);Map<String, String> map = new HashMap<String, String>();map.put(Phone.DISPLAY_NAME, name);map.put(Phone.NUMBER, number);data.add(map);}cursor.close();// 设置适配器lv_list_persons.setAdapter(new PersonAdapter());// 添加item的点击事件lv_list_persons.setOnItemClickListener(this);}// 添加item的点击事件@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// 取数据String number = data.get(position).get(Phone.NUMBER);Intent intent = getIntent();intent.putExtra("number", number);// 设置要回传的数据setResult(2, intent);// 关闭当前界面finish();}// 适配器private class PersonAdapter extends BaseAdapter {@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;// 如果没有视图可以复用时候,就在本activity视图动态加载视图文件if (convertView == null) {// 动态加载视图convertView = View.inflate(PersonListActivity.this,R.layout.person_item, null);viewHolder = new ViewHolder();viewHolder.tv_item_person_name = (TextView) convertView.findViewById(R.id.tv_item_person_name);viewHolder.tv_item_person_number = (TextView) convertView.findViewById(R.id.tv_item_person_number);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}// 获取值Map<String, String> map = data.get(position);viewHolder.tv_item_person_name.setText(map.get(Phone.DISPLAY_NAME));viewHolder.tv_item_person_number.setText(map.get(Phone.NUMBER));return convertView;}// 适配器的内部类class ViewHolder {public TextView tv_item_person_name;public TextView tv_item_person_number;}}
}



这篇关于getAllContants--获取手机联系人列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125361

相关文章

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现