首页 > 学院 > 开发设计 > 正文

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

2019-11-08 01:27:44
字体:
来源:转载
供稿:网友

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

首先在清单文件中配置:

<!--读取联系人的权限--><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; } }}

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表