android数据提供者ContentProvider

ContentProvider的主要功能是存储并检索数据以及向其他应用程序提供访问数据的接口

我们来做个简单的例子,检索手机的联系人信息

activity_main.xml

<RelativeLayout 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"
    tools:context="com.ssln.contentresolver.MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />

</RelativeLayout>

MainActivity.java

package com.ssln.contentresolver;

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    
    //要查询的字段
    String[] columns={People._ID,People.NAME};

    //查询联系人的URI
    Uri contactUri=People.CONTENT_URI;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        TextView tv=(TextView)findViewById(R.id.tv);
        tv.setText("ID	Name
"+getContactData());
    }
    private String getContactData(){
        String result="";
        ContentResolver resolver=getContentResolver();
        Cursor cursor=resolver.query(contactUri, columns, null, null, null);
        int idIndex=cursor.getColumnIndex(People._ID);
        int nameIndex=cursor.getColumnIndex(People.NAME);
        for(cursor.moveToFirst();(!cursor.isAfterLast());cursor.moveToNext()){
            result+=cursor.getString(idIndex)+"	";
            result+=cursor.getString(nameIndex)+"
";
        }
        cursor.close();
        return result;
    }

}

记得加入访问联系人的权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ssln.contentresolver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 看下效果

原文地址:https://www.cnblogs.com/alwaysfirst/p/4011031.html