自己弄的一个很简单的通讯录,还原备份是从开源文件截取来的。新人,不喜勿喷
public class ContactInfo {private String name;private String phone;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}} public class ContactInfoProvider {/** * 获取手机里面全部的联系人信息 * * @return */public static List getContactInfos(Context context) {ContentResolver resolver = context.getContentResolver();Uri uri = Uri.parse("content://com.android.contacts/contacts");Uri datauri = Uri.parse("content://com.android.contacts/data");List infos = new ArrayList();Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null,null);while (cursor.moveToNext()) {String id = cursor.getString(0);System.out.println("联系人id:" + id);if (id != null) {ContactInfo info = new ContactInfo();Cursor dataCursor = resolver.query(datauri, new String[] {"data1", "mimetype" }, "raw_contact_id=?",new String[] { id }, null);while (dataCursor.moveToNext()) {String data1 = dataCursor.getString(0);String mimetype = dataCursor.getString(1);if ("vnd.android.cursor.item/name".equals(mimetype)) {System.out.println("手机联系人:" + data1);info.setName(data1);} else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {System.out.println("电话号码:" + data1);info.setPhone(data1);}}infos.add(info);dataCursor.close();}}cursor.close();return infos;}}public class Listview2 extends Activity {private ListView lv_contacts;private List contactInfos;private ImageButton shezhi;private ImageButton button_call;private ImageButton bohao;private Button add;private RelativeLayout duihua;final int MYDIALOG = 1;/** * 定义handler */private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {lv_contacts.setAdapter(new ContactAdapter());};};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();initView();shezhi = (ImageButton) findViewById(R.id.shezhi);button_call = (ImageButton) findViewById(R.id.call);add = (Button) findViewById(R.id.add_btn);lv_contacts = (ListView) findViewById(R.id.list);// setListener();/** * 设置监听事件 */shezhi.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubComponentName componentName = new ComponentName(Listview2.this,"jmpt.tongxun3.ShezhiActivity");Intent intent = new Intent();intent.setComponent(componentName);startActivity(intent);}});button_call.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubUri uri = Uri.parse("tel:");Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent); // ������һ������}});add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubUri insertUri = android.provider.ContactsContract.Contacts.CONTENT_URI;Intent intent = new Intent(Intent.ACTION_INSERT, insertUri);startActivityForResult(intent, 1008);}});lv_contacts.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubMap map=(Map)((ListView)arg0).getItemAtPosition(arg2); Toast.makeText(Listview2.this, map.get("num"), Toast.LENGTH_SHORT).show(); showDialog(MYDIALOG);}});}@Overrideprotected Dialog onCreateDialog(int id) {// TODO Auto-generated method stubDialog dialog=null;switch(id){case MYDIALOG:Builder builder= new AlertDialog.Builder(this);builder.setTitle("duihua");builder.setMessage("hi");dialog=builder.create();break;default:break;}return dialog;}/** * 初始化view对象 */private void initView() {lv_contacts = (ListView) findViewById(R.id.list);shezhi = (ImageButton) findViewById(R.id.shezhi);button_call = (ImageButton) findViewById(R.id.call);bohao = (ImageButton) findViewById(R.id.iv_contact_icon);add = (Button) findViewById(R.id.add_btn);duihua = (RelativeLayout)findViewById(R.id.duihua);}private void initData() {new Thread() {@Overridepublic void run() {contactInfos = ContactInfoProvider.getContactInfos(Listview2.this);handler.sendEmptyMessage(0);};}.start();}private class ContactAdapter extends BaseAdapter { @Overridepublic int getCount() {return contactInfos.size();}@Overridepublic Object getItem(int arg0) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {View view = View.inflate(getApplicationContext(),R.layout.list_contact_item, null);TextView tv_name = (TextView) view.findViewById(R.id.tv_contact_name);TextView tv_phone = (TextView) view.findViewById(R.id.tv_contact_phone);ContactInfo info = contactInfos.get(position);tv_name.setText(info.getName());tv_phone.setText(info.getPhone());ImageButton iv_contact_icon = (ImageButton) view.findViewById(R.id.iv_contact_icon);iv_contact_icon.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 调用系统方法拨打电话Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ contactInfos.get(position).getPhone()));startActivity(dialIntent);}});return view;}}/* private String[] lianxiren1 = new String[] { "拨打电话", "查看详细","删除" };//群组联系人弹出页 private void showContactDialog(final String[] arg , final int position){ new AlertDialog.Builder(this).setTitle(contactInfos.get(position).getName()).setItems(arg, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which){ Uri uri = null; switch(which){ case 0://打电话 String toPhone = contactInfos.get(position).getPhone(); uri = Uri.parse("tel:" + toPhone); Intent it = new Intent(Intent.ACTION_CALL, uri); startActivity(it); break; case 1:// 查看详细 修改联系人资料 uri = ContactsContract.Contacts.CONTENT_URI;// Uri personUri = ContentUris.withAppendedId(uri, getContactId()); Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_VIEW);// intent2.setData(personUri); startActivity(intent2); break; case 2:// 删除 //showDelete(contactInfos.get(position).setName(toPhone), position); break; } } }).show(); }*/// 刷新数据protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (1008 == requestCode) {initData();}super.onActivityResult(requestCode, resultCode, data);}}
文件源码:通讯录+备份还原www.eoeandroid.com/thread-496745-1-1.html(出处: eoe 移动开发者论坛)