读取联系人

读取联系人

新建项目ContactsTest
修改activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.contactstest.MainActivity">

    <ListView
        android:id="@+id/contacts_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</LinearLayout>
修改MainActivity:
package com.example.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.support.v7.widget.RecyclerView;
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<>();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView cantactsView = (ListView) findViewById(R.id.contacts_view);

        adapter =   new  ArrayAdapter<String>(
                 this,android.R.layout.simple_list_item_1,
                 contactsList
         );
        cantactsView.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{
            cursor =   getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null
            );

            if(cursor!=null){
                while(cursor.moveToNext()){
                    //获取联系人姓名
            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);
                }
                adapter.notifyDataSetChanged();
            }



        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (cursor !=null){
                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,"你拒绝了",Toast.LENGTH_LONG).show();
                }

                break;
            default:


        }



    }
}
AndroidManifest.xml添加权限:
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android使用内容提供者实现增删改查操作

    这里需要建立两个项目:SiYouShuJuKu(使用内容提供者暴露相关的操作),DQDYGApplication(使用内容解析者对第一个应用进行相关的解析)

    Dream城堡
  • Android引入布局

    Dream城堡
  • android的电话监听

    Dream城堡
  • Android使用内容提供者实现增删改查操作

    这里需要建立两个项目:SiYouShuJuKu(使用内容提供者暴露相关的操作),DQDYGApplication(使用内容解析者对第一个应用进行相关的解析)

    Dream城堡
  • android蓝牙测试

    注意点:在执行getBondedDevices时候会花费一点时间,一开始我不知道,“已配对”一直没出现,以为出错了。后来上了趟厕所回来发现就有了!!!!尴尬!

    提莫队长
  • Android开发(35) 使用android_serialport_api 操作串口斑马打印机

    使用安卓设备操作串口的问题。 我找到一个框架:android_serialport_api,这个框架被托管在:

    zhangyunfeiVir
  • android开发_mp3_player音乐播放器

    ============================================

    Hongten
  • AnimationDrawable 实现正在加载的旋转动画

    要实现这样的效果  就是中间的那个   正在拼命加载数据中  然后是那个动画在不停的旋转,

    wust小吴
  • Android PowerImageView实现,可以播放动画的强大ImageView

    我个人是比较喜欢逛贴吧的,贴吧里总是会有很多搞笑的动态图片,经常看一看就会感觉欢乐很多,可以释放掉不少平时的压力。确实,比起一张单调的图片,动态图片明显更加的有...

    用户1158055
  • Android menu item "showAsAction"属性出错的解决办法

    最近在看《Android编程权威指南》,按照第16.1.1节创建菜单的时候,却报错了:

    飞奔去旅行

扫码关注云+社区

领取腾讯云代金券