package com.example.contentprovider;
import java.util.ArrayList;
import java.util.List;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ContentResolver crl;
private List<User> lu=new ArrayList<User>();
private ListView lv;
private Uri uri;
private Uri uridata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
crl=getContentResolver();
lv=(ListView)findViewById(R.id.listView1);
uri=Uri.parse("content://com.android.contacts/raw_contacts");
uridata=Uri.parse("content://com.android.contacts/data");
}
public void add(View v){
ContentValues values=new ContentValues();
values.put("contact_id", "3");
crl.insert(uri, values);
}
public void query(View v){
Cursor cursor = crl.query(uri, null, null, null, null);
while(cursor.moveToNext()){
String id=cursor.getString(cursor.getColumnIndex("contact_id"));
if(id==null)
continue;
User u=new User();
Cursor cursor2 = crl.query(uridata, null, "raw_contact_id=?", new String[]{String.valueOf(id)}, null);
while(cursor2.moveToNext()){
String data=cursor2.getString(cursor2.getColumnIndex("data1"));
String mimetype=cursor2.getString(cursor2.getColumnIndex("mimetype"));
if("vnd.android.cursor.item/name".equals(mimetype)){
u.setName(data);
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
u.setPhone(data);
}
}
lu.add(u);
}
lv.setAdapter(new Adapter());
}
class Adapter extends BaseAdapter{
private List<User> lu=new ArrayList<User>();
private ListView lv;
private Uri uri;
private Uri uridata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
crl=getContentResolver();
lv=(ListView)findViewById(R.id.listView1);
uri=Uri.parse("content://com.android.contacts/raw_contacts");
uridata=Uri.parse("content://com.android.contacts/data");
}
public void add(View v){
ContentValues values=new ContentValues();
values.put("contact_id", "3");
crl.insert(uri, values);
}
public void query(View v){
Cursor cursor = crl.query(uri, null, null, null, null);
while(cursor.moveToNext()){
String id=cursor.getString(cursor.getColumnIndex("contact_id"));
if(id==null)
continue;
User u=new User();
Cursor cursor2 = crl.query(uridata, null, "raw_contact_id=?", new String[]{String.valueOf(id)}, null);
while(cursor2.moveToNext()){
String data=cursor2.getString(cursor2.getColumnIndex("data1"));
String mimetype=cursor2.getString(cursor2.getColumnIndex("mimetype"));
if("vnd.android.cursor.item/name".equals(mimetype)){
u.setName(data);
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
u.setPhone(data);
}
}
lu.add(u);
}
lv.setAdapter(new Adapter());
}
class Adapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return lu.size();
}
public int getCount() {
// TODO Auto-generated method stub
return lu.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return lu.get(position);
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return lu.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
User u=lu.get(position);
convertView=View.inflate(MainActivity.this, R.layout.list, null);
TextView tv1=(TextView)convertView.findViewById(R.id.textView1);
TextView tv2=(TextView)convertView.findViewById(R.id.textView2);
tv1.setText("姓名:"+u.getName());
tv2.setText("电话:"+u.getPhone());
return convertView;
}
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
User u=lu.get(position);
convertView=View.inflate(MainActivity.this, R.layout.list, null);
TextView tv1=(TextView)convertView.findViewById(R.id.textView1);
TextView tv2=(TextView)convertView.findViewById(R.id.textView2);
tv1.setText("姓名:"+u.getName());
tv2.setText("电话:"+u.getPhone());
return convertView;
}
}
}
清单文件中的权限
android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>