首页 > 其他 > 详细

Contentprovider获取联系人id和姓名

时间:2015-10-29 20:04:13      阅读:264      评论:0      收藏:0      [点我收藏+]
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>

 

Contentprovider获取联系人id和姓名

原文:http://www.cnblogs.com/84126858jmz/p/4921573.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!