Android ContentProvider查看/读取手机联系人实例
作者:via_myra 时间:2021-10-13 07:10:13
看到某些App里面有读取联系人的功能,然后自己尝试了一下。发现这个挺简单的。然后自己就做了一个demo给大家,希望借这个demo可以让大家学习一下怎么实现读取手机联系人。
这里我用了两种方法去读取:第一张图片是跳转到系统自带的联系人界面,第二种就是直接去读取让后绑上来显示在主页面。话不多说直接上代码。
记得在AndroidManifest.xml 记得加入这两句,不然就读取不到联系人。
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
package com.example.android_contentersolver;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.provider.ContactsContract;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.main_btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//查询联系人号码
final Cursor cursor = getContentResolver()
.query(ContactsContract.CommonDataKinds
.Phone.CONTENT_URI, null, null, null, null);
BaseAdapter adapter = new BaseAdapter()
{
@Override
public int getCount()
{
return cursor.getCount();
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position,
View convertView, ViewGroup parent)
{
cursor.moveToPosition(position);
// CheckBox rb = new CheckBox(MainActivity.this);
TextView text=new TextView(MainActivity.this);
// 获取联系人的电话号码,并去掉中间的中划线、空格
String number = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.NUMBER))
.replace("-", "")
.replace(" ", "");
// rb.setText(number);
String name = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.DISPLAY_NAME));
text.setText("名字:"+name+" 电话号码:"+number);
return text;
}
};
//加载listview
ListView listview=(ListView) findViewById(R.id.mian_list);
listview.setAdapter(adapter);
}
});
//跳转系统的联系人界面
findViewById(R.id.main_btn_sys).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setAction(intent.ACTION_PICK);
intent.setType("vnd.android.cursor.dir/phone");
startActivityForResult(intent, 0x100);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Uri uri=data.getData();
Cursor cursor = getContentResolver()
.query(uri, null, null, null, null);
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NAME));
String number=cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NUMBER));
TextView textview=(TextView) findViewById(R.id.mian_lists);
textview.setText("名字:"+name+" 电话号码:"+number);
}
}
}
来源:http://blog.csdn.net/via_myra/article/details/54953111
标签:android,ContentProvider
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
为什么rest接口返回json建议采用下划线形式,不要用驼峰
2023-06-24 23:23:16
Java新手环境搭建 JDK8安装配置教程
2023-11-25 17:23:10
![](https://img.aspxhome.com/file/2023/1/60311_0s.jpg)
Java创建线程的五种写法总结
2023-01-10 04:39:34
Java将json对象转换为map键值对案例详解
2023-11-28 07:38:43
![](https://img.aspxhome.com/file/2023/9/60129_0s.png)
C#实现数字华容道游戏
2023-10-26 10:01:07
![](https://img.aspxhome.com/file/2023/2/94542_0s.jpg)
Java定位问题线程解析
2023-08-09 22:04:27
![](https://img.aspxhome.com/file/2023/1/58041_0s.png)
spring cloud Feign使用@RequestLine遇到的坑
2023-12-15 09:18:16
![](https://img.aspxhome.com/file/2023/5/78035_0s.png)
OpenCV实现人脸识别简单程序
2023-07-07 00:31:12
Java WebService 简单实例(附实例代码)
2023-01-25 07:52:18
![](https://img.aspxhome.com/file/2023/8/64528_0s.png)
Java C++题解leetcode904水果成篮
2023-12-08 21:06:09
![](https://img.aspxhome.com/file/2023/3/89953_0s.png)
Java数组(Array)最全汇总(上篇)
2022-12-19 23:22:30
![](https://img.aspxhome.com/file/2023/8/77498_0s.jpg)
java进阶之了解SpringBoot的配置原理
2022-05-08 05:10:36
![](https://img.aspxhome.com/file/2023/0/64000_0s.png)
Java语法基础之函数的使用说明
2022-07-20 15:55:09
Java常用流程控制语句实现原理解析
2023-11-08 14:11:34
@SpringBootTest 注解报红问题及解决
2022-08-14 23:24:51
![](https://img.aspxhome.com/file/2023/6/71016_0s.jpg)
C#通过链表实现队列的方法
2023-06-19 15:14:17
Java PreparedStatement用法详解
2023-08-08 20:20:51
![](https://img.aspxhome.com/file/2023/1/58061_0s.png)
Android中使用 AutoCompleteTextView 实现手机号格式化附带清空历史的操作
2021-07-05 17:08:43
![](https://img.aspxhome.com/file/2023/7/87287_0s.png)
Java调用WebService接口作测试
2023-08-11 17:00:20
![](https://img.aspxhome.com/file/2023/9/78279_0s.png)
SprinBoot如何集成参数校验Validator及参数校验的高阶技巧
2023-10-23 16:24:31
![](https://img.aspxhome.com/file/2023/3/84333_0s.png)