Android read address book data

Table of contents

1. Layout and Activity code

2. Add permissions

3. Add data


1. Layout and Activity code

<?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=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

    </LinearLayout>

</LinearLayout>

 

package com.example.sqlite.activity;


import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.sqlite.R;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {

    ListView contactsView;
    ArrayAdapter<String> adapter;
    List<String> contactsList=new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone);
        contactsView=(ListView) findViewById(R.id.contest_view);
        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(
                    MainActivity.this,new String[]{Manifest.permission.READ_CONTACTS},1);
        } else {
            readContacts();
        }
        //readContacts();
    }

    private void readContacts()
    {
        Cursor cursor=null;
        try {
            cursor =getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,null,null,null);
            while (cursor.moveToNext()) {
                int i_name=cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                String displayName = cursor.getString(i_name);
                int i_number=cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                String number = cursor.getString(i_number);
                contactsList.add(displayName + "\n" + number);

            }
        }catch (Exception e)
        {
            e.printStackTrace();
        }finally {
            if (cursor!=null)
            {
                cursor.close();
            }
        }
    }
}

2. Add permissions

<uses-permission android:name="android.permission.READ_CONTACTS"/>

 When starting the project for the first time, it will ask whether to authorize, click Agree to authorize.

3. Add data

If you do not add data, the project will be blank if you run it directly, because there is no information in the phone address book. All need to add contacts.

Save it after entering the information.

Guess you like

Origin blog.csdn.net/i__saber/article/details/130306633