使用内容提供者contacts获取手机中所有联系人,并显示在列表中。
一、在AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
二、创建活动
视图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:stackFromBottom="false"
android:transcriptMode="normal" />
<TextView
android:id="@+id/contactName"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/contactID"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
代码
package com.example.androidtest;
import android.app.ListActivity;
import android.content.CursorLoader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.SimpleCursorAdapter;
import android.widget.CursorAdapter;
public class ProviderActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_provider);
Uri allContacts = ContactsContract.Contacts.CONTENT_URI;
//等价于:
//Uri allContacts = Uri.parse("content://contacts/people");
Cursor c;
if (android.os.Build.VERSION.SDK_INT < 11) {
c = managedQuery(allContacts, null, null, null, null);
//等价于:
//c = getContentResolver().query(allContacts, null, null, null, null);
//startManagingCursor(c);
} else {
CursorLoader cursorLoader = new CursorLoader(this, allContacts, null,null,null,null);
c = cursorLoader.loadInBackground();
}
String[] columns = new String[] {
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID
};
int[] views = new int[] {R.id.contactName, R.id.contactID};
SimpleCursorAdapter adapter;
if (android.os.Build.VERSION.SDK_INT < 11) {
adapter = new SimpleCursorAdapter(
this, R.layout.activity_provider, c, columns, views);
} else {
adapter = new SimpleCursorAdapter(
this, R.layout.activity_provider, c, columns, views, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
//必须使用默认id: "@+id/android:list" 才能使用setListAdapter();
this.setListAdapter(adapter);
}
}