Content Provider属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。
本章案例通过读取联系人信息为例。
一、程序文件
打开“src/com.genwoxue.intentcontprov/MainActivity.java”文件。
然后输入以下代码:
package com.genwoxue.intentcontprov;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final int CONTACT_PICK=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uri uri=Uri.parse("content://contacts/people");
Intent intent=new Intent(Intent.ACTION_PICK,uri);
super.startActivityForResult(intent,1);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case CONTACT_PICK:
Uri uri=data.getData();
String mobileselect=ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?";
String[] mobileselectargs={String.valueOf(ContentUris.parseId(uri))};
Cursor cursor=super.managedQuery(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
mobileselect,
mobileselectargs,
null);
StringBuffer buff=new StringBuffer();
buff.append("手机号码:");
for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
buff.append(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
Toast.makeText(getApplicationContext(), buff, Toast.LENGTH_LONG).show();
}
}
}
}
三、配置文件
打开“AndroidManifest.xml”文件。
然后输入以下代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.genwoxue.intentcontprov"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<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="com.genwoxue.intentcontprov.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>
注意:需要在AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
四、运行结果
我们选择“乔内蒙”,显示其电话号码。