安卓四大组件-内容提供器-2.1_项目实战-读取系统联系人
来源:互联网 发布:一年java工作经验 编辑:程序博客网 时间:2024/04/29 06:03
基础知识就不多说了,直接上源代码吧!有什么不懂得请看我发的内容提供器第二篇!代码里有丰富的注释
<?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="vertical"> <ListView android:id="@+id/contact_view" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
package com.example.a14468.contactstest;import android.Manifest;import android.content.pm.PackageManager;import android.database.Cursor;import android.provider.ContactsContract;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { ArrayAdapter<String> adapter; List<String> contactsList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView contactsView = (ListView) findViewById(R.id.contact_view);//获取ListView实例 //设置好适配器 adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList); contactsView.setAdapter(adapter); //调用运行权限的处理逻辑 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.READ_CONTACTS }, 1); } else { readContacts();//读取联系人的信息 } } private void readContacts() { Cursor cursor = null; try { //查询联系人 // CommonDataKinds.Phone.类提供了CONTENT_URI常量,这个常量是使用Uri.parse()方法去解析出来的结果 cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null); if (cursor != null){//对Cursor进行遍历 while (cursor.moveToNext()){ //获取联系人姓名 //联系人姓名这一列对应的常量是ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME //联系人手机好这一列对应的常量是ContactsContract.CommonDataKinds.Phone.NUMBER String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); //获取联系人手机号 String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); //将取出的两个数据进行拼接,中间加上换行符 contactsList.add(displayName + "\n" + number); } //间拼接的数据添加到ListView的数据源里,并通知刷新一下ListView. adapter.notifyDataSetChanged(); } }catch (Exception e){ e.printStackTrace(); }finally { if (cursor != null){ //最后将Cursor对象关闭, // 记得最后申明权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> cursor.close(); } } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch(requestCode){ case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ readContacts(); }else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: } }}
0 0
- 安卓四大组件-内容提供器-2.1_项目实战-读取系统联系人
- 安卓1110_四大组件-ContentProvider内容提供者 备份短信 查询联系人 插入联系人
- 安卓四大组件-内容提供器-2_访问其他程序中的数据
- ContentResolver(内容提供器):安卓授权——读取联系人
- 由系统的内容提供器读取手机联系人信息
- android-内容提供器之读取联系人
- Android四大组件之内容提供器
- [Android四大组件] ContentProvider 内容提供器
- 安卓四大组件----内容提供者
- Android初级开发(七)——内容提供器—读取系统联系人
- Android四大组件之 内容提供器Content Provider
- Android四大组件之一,内容提供器Content Provider详解
- 内容提供器(1)/2 内容提供器读取联系人
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- C++中vector和map使用详解
- Mac中,终端运行sublime命令
- 设计原则之依赖倒置原则
- 2016蓝桥杯java A组 博弈问题
- Java Socket编程
- 安卓四大组件-内容提供器-2.1_项目实战-读取系统联系人
- Json相关
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。java
- 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记
- Hololens入门之使用Unity开发一个简单的应用
- mysql添加DATETIME类型字段导致Invalid default value错误的问题
- 第七届蓝桥杯JAVAb组第三题凑算式
- ConfigUtil加载配置文件工具类
- dbms_lob.instr()操作——查找blob数据中的字符串