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\tName\n"+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)+"\t";            result+=cursor.getString(nameIndex)+"\n";        }        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>

看下效果

更多相关文章

  1. android读书知识点总结
  2. Activity页面状态保存 持久化
  3. Android学习笔记(十二)——数据存储(SQLite数据库)
  4. android的sqlite数据库中单引号的诡异作用
  5. [置顶] Android(安卓)入门基础(9) ---SharedPreferences
  6. Android(安卓)访问HTTP资源
  7. android 之数据存储(IO)
  8. json 的解析-使用Android中的JSONObject和JSONArray解析json数据
  9. Android(安卓)数据库操作:Room

随机推荐

  1. startActivity exposed beyond app throu
  2. CheckBox自定义
  3. Android中真正的Player
  4. android设备信息获取
  5. android获得屏幕高度和宽度
  6. Build Android(安卓)Platform
  7. Android(安卓)编译提示R文件找不到
  8. 安卓巴士Android开发神贴整理
  9. Android(安卓)Touch事件
  10. Android中获得SD卡中的值