Android学习之经过content provider获得联系人

Android学习之通过content provider获得联系人
package cn.mycontent;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.provider.ContactsContract;
import android.widget.TextView;

public class Activity01 extends Activity {
	//查询Content Provider时希望返回的列
	String [] columns = {
			ContactsContract.Contacts.DISPLAY_NAME,
			ContactsContract.Contacts._ID,
            //People._ID,
			//People.NAME
	};
	
	Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
	TextView tv;
	//Uri contaUri = Contacts.People.CONTENT_URI;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView)findViewById(R.id.tv);
        String result = getQueryData();
        tv.setTextColor(Color.GREEN);
        tv.setTextSize(20.0f);
        tv.setText("ID\t名字\n" + result);
        
    }
    //获取联系人列表的信息,返回 String对象
    public String getQueryData(){
    	String result = "";
    	//获取ContentResolver对象
    	ContentResolver resolver = getContentResolver();
    	Cursor cursor = resolver.query(contactUri, columns, null, null, null);
    	//获得_ID字段的索引
    	int idIndex = cursor.getColumnIndex(BaseColumns._ID);
    	//获得Name字段的索引
    	int nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
    	//遍历Cursor提取数据
    	for (cursor.moveToFirst();(!cursor.isAfterLast());cursor.moveToNext()) {
			result = result + cursor.getString(idIndex) + "\t";
			result = result + cursor.getString(nameIndex)+ "\t\n";
		}
    	cursor.close();
    	return result;
    }
}

 

需加上<uses-permission android:name="android.permission.READ_CONTACTS" />权限

 

附件为自定义content provider