ContentProvider内容提供者与ContentResolver内容访问者(二)

之前是自定义内容提供者,内容访问者,存在很多弊端。
然而大多数都是调用系统的,别人已经存在,直接调用即可。

首先在清单文件中配置:

<!--读取联系人的权限-->
<uses-permission android:name="android.permission.READ_CONTACTS" />

拿到系统联系人,用listview遍历

public class ListActivity extends AppCompatActivity {

    private ListView list_tel_item;

    private ContentResolver cr;

    List<String> listName=new ArrayList<>();
    List<String> listNumber=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        list_tel_item = (ListView) findViewById(R.id.list_tel_item);

        cr = getContentResolver();
        //获取联系人的ID及名字
        Uri uri= Uri.parse("content://com.android.contacts/raw_contacts");
        Cursor cursor=cr.query(uri,null,null,null,null);

        while(cursor.moveToNext()){
            int id=cursor.getInt(cursor.getColumnIndex("_id"));
            String name=cursor.getString(cursor.getColumnIndex("display_name"));
            Log.i("test",id+" "+name);
            listName.add(name);

            //根据联系人的ID获取联系人相对应的数据(名字+邮箱+phone)
            Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");
            Cursor cursorData=cr.query(uriData,null,null,null,null);

            while(cursorData.moveToNext()){
                String data1=cursorData.getString(cursorData.getColumnIndex("data1"));
                //int type=cursorData.getInt(cursorData.getColumnIndex("mimetype_id"));
                String type=cursorData.getString(cursorData.getColumnIndex("mimetype"));
                if("vnd.android.cursor.item/phone_v2".equals(type)){
                    listNumber.add(data1);
                    Log.i("test","   "+data1+"    "+type);
                }
            }
        }
        list_tel_item.setAdapter(new ListViewAdapter());
    }

    //给listview设置适配器
    class ListViewAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return listName.size();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = getLayoutInflater().inflate(R.layout.activity_textview, null);
            //拿控件
            TextView list_text_name = (TextView) view.findViewById(R.id.list_text_name);
            TextView list_text_number = (TextView) view.findViewById(R.id.list_text_number);
            //绑定数值
            list_text_name.setText(listName.get(position));
            list_text_number.setText(listNumber.get(position));
            return view;
        }
    }


}

效果图如下所示:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值