package com.example.contentproviderdemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.app.Activity; import android.database.Cursor; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; public class MainActivity extends Activity { private ListView lv; private Cursor cu; private List<Map<String, Object>> list; private SimpleAdapter sa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); // 查看所有联系人信息 cu = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //startManagingCursor(cu); list = new ArrayList<Map<String, Object>>(); while (cu.moveToNext()) { Map<String, Object> map = new HashMap<String, Object>(); // 取出指定名称的数据 map.put("_id", cu.getInt(cu.getColumnIndex(ContactsContract.Contacts._ID))); map.put("name", cu.getString(cu .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); list.add(map); } sa = new SimpleAdapter(this, list, R.layout.item_lv, new String[] { "_id", "name" }, new int[] { R.id._id, R.id.name }); lv.setAdapter(sa); // 注册上下文菜单 registerForContextMenu(lv); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("手机联系人"); menu.add(Menu.NONE, Menu.FIRST + 1, 1, "查看信息"); menu.add(Menu.NONE, Menu.FIRST + 2, 2, "删除"); } @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item .getMenuInfo(); int postion = info.position; // 获取列表中的id long contractsId = Long.parseLong(list.get(postion).get("_id") .toString()); switch (item.getItemId()) { case Menu.FIRST + 1: // 设置查询的条件 为按id查询 String phoneSelection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?"; // 对条件的完善 String[] phoneSelectArgs = { String.valueOf(contractsId) }; Cursor c =super.getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, phoneSelection, phoneSelectArgs, null); // 用sb对象来接收 StringBuffer sb = new StringBuffer(); sb.append("电话号码是"); while (c.moveToNext()) { sb.append( c.getString(c .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))) .append(","); } Toast.makeText(MainActivity.this, sb, 0).show(); break; case Menu.FIRST + 2: // 删除也是按id来删除 getContentResolver().delete(Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(contractsId)),null, null); // getContentResolver().delete(url, where, selectionArgs) // 用list中移除 list.remove(postion); // 更新adapter sa.notifyDataSetChanged(); Toast.makeText(MainActivity.this, "数据已经删除", 0).show(); break; } return false; } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机联系人" /> <ListView android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
原文:http://www.cnblogs.com/84126858jmz/p/4921573.html