Android——ContentProvider

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.chenshuai.myapplication.ActivityContentProvider"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询数据"
        android:onClick="chaxun_onclick"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加数据"
        android:onClick="tianjia_onclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="更新数据"
        android:onClick="gengxin_onclick"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除数据"
        android:onClick="shanchu_onclick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="读取联系人信息"
        android:onClick="duqu_onclick"/>


</LinearLayout>

JAVA

package com.example.chenshuai.myapplication;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class ActivityContentProvider extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activity_content_provider);
/*
        Intent intent = new Intent(Intent.ACTION_DIAL);

        Uri uri = Uri.parse("tel:110");

        intent.setData(uri);*/
    }
    public void chaxun_onclick(View view)
    {
        //获得解析器
        ContentResolver contentResolver = getContentResolver();

        Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number");

        /*contentResolver.update(uri,new ContentValues(),"",new String[]{});

        Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/

        Cursor cursor = contentResolver.query(uri, null, null, null, null);

        while (cursor.moveToNext())
        {
            Toast.makeText(ActivityContentProvider.this, "遍历数据:_id =  "+cursor.getLong(0)+
                    "phone_number= "+cursor.getString(1), Toast.LENGTH_SHORT).show();
        }

        cursor.close();
    }
    public void tianjia_onclick(View view)
    {
        //获得解析器
        ContentResolver contentResolver = getContentResolver();

        Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number");

        /*contentResolver.update(uri,new ContentValues(),"",new String[]{});

        Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/

        ContentValues c= new ContentValues();
        c.put("phone_number","123456");

        uri = contentResolver.insert(uri,c);

        long id = ContentUris.parseId(uri);

        Toast.makeText(ActivityContentProvider.this, "新数据的id="+id, Toast.LENGTH_SHORT).show();
    }
    public void gengxin_onclick(View view)
    {
        //获得解析器
        ContentResolver contentResolver = getContentResolver();

        Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number");

        /*contentResolver.update(uri,new ContentValues(),"",new String[]{});

        Toast.makeText(ActivityContentProvider.this, "调用内容提供者", Toast.LENGTH_SHORT).show();*/

        ContentValues c= new ContentValues();

        c.put("phone_number","123456");

        int content = contentResolver.update(uri, c, null, null);

        Toast.makeText(ActivityContentProvider.this, "返回修改的数据?"+content, Toast.LENGTH_SHORT).show();
    }
    public void shanchu_onclick(View view)
    {
        ContentResolver contentResolver = getContentResolver();

        Uri uri = Uri.parse("content://com.example.cheshuai.test.activityhhh1/black_number");

        int btn = contentResolver.delete(uri, "_id>?", new String[]{"1"});

        Toast.makeText(ActivityContentProvider.this, "删除数据条数"+btn, Toast.LENGTH_SHORT).show();

    }
    public void duqu_onclick(View view)
    {
        ContentResolver contentResolver = getContentResolver();

        //联系人信息的URI 授权
        //管理联系人的Uri
        //ContactsContract.Contacts.CONTENT_URI

        //管理联系人电话的Uri
        //ContactsContract.CommonDataKinds.Phone.CONTENT_URI
        Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null, null);

        while(cursor.moveToNext())
        {
            long id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID));

            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

            Toast.makeText(ActivityContentProvider.this, "数据id= "+id + "数据name= "+name, Toast.LENGTH_SHORT).show();

            //通过id查询联系人的电话信息

            Cursor cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{id +""},null);

            while (cursor1.moveToNext())
            {
                String phone = cursor1.getString(cursor1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                Toast.makeText(ActivityContentProvider.this, "电话信息= "+ phone, Toast.LENGTH_SHORT).show();


            }
            cursor1.close();
        }
        cursor.close();

    }

}
manifest
<!-- 读取联系人权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

        <provider
            android:name=".MyContentProvider"
            android:authorities="com.example.cheshuai.test.activityhhh1"
            android:enabled="true"
            android:exported="true" />
原文地址:https://www.cnblogs.com/Chenshuai7/p/5454075.html