//主界面
package com.example.contentresolver_exam1;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Environment;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.LayoutInflater;
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 ListView mListView;
//定义集合
private List<User> list_user=new ArrayList<User>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//或得控件id
mListView=(ListView) findViewById(R.id.mylistview);
intodata();
//添加适配器
mListView.setAdapter(adapter);
//定义写入 sd卡的方法
}
/**
* 构造写入sd卡的方法
*/
private void writer(User u) {
// TODO Auto-generated method stub
//判断sd卡路径
File path=Environment.getExternalStorageDirectory();
String state=Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
//向指定文件中写入数据
File files=new File(path, "exam01.txt");
StringBuilder sb=null;
//判断文件是否存在
if (!files.exists()) {
try {
files.createNewFile();
FileOutputStream fos=new FileOutputStream(files,true);
//将字节流转换成字符流
OutputStreamWriter out=new OutputStreamWriter(fos);
//转换成缓冲流
BufferedWriter bw=new BufferedWriter(out);
bw.write(u.getName());
bw.write(u.getPhone());
bw.newLine();
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//定义方法,用来存放查询的数据
private void intodata() {
// TODO Auto-generated method stub
//使用contentrsolver读取系统中的联系人
Cursor cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
User u=null;
while(cursor.moveToNext()){
//得到联系人的id
String contactid=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//或得联系人的名字
String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//根据id,获取联系人对应的电话号码
Cursor phones=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactid, null, null);
while(phones.moveToNext()){
String phonenumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
u=new User(name, phonenumber);
list_user.add(u);
writer(u);
}
}
}
BaseAdapter adapter=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder v;
if (convertView==null) {
v=new ViewHolder();
convertView=LayoutInflater.from(getApplicationContext()).inflate(R.layout.list_item, null);
v.name=(TextView) convertView.findViewById(R.id.name);
v.phone=(TextView) convertView.findViewById(R.id.phone);
convertView.setTag(v);
}else{
v=(ViewHolder) convertView.getTag();
}
v.name.setText(list_user.get(position).getName());
v.phone.setText(list_user.get(position).getPhone());
return convertView;
}
class ViewHolder{
TextView name,phone;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list_user.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list_user.size();
}
};
}