import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.
RequiresApi;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A simple {
@link
Fragment} subclass.
*/
public class BlankFragment2
extends Fragment {
private Button
button;
private ContentResolver
cr;
private ListView
ls_contacts;
private List<Map<String,String>>
mp=
new ArrayList<>();
private SimpleAdapter
simpleAdapter;
public BlankFragment2() {
// Required empty public constructor
}
@RequiresApi(api = Build.VERSION_CODES.
JELLY_BEAN)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.
fragment_blank_fragment2, container,
false);
cr = getContext().getContentResolver();
ls_contacts = view.findViewById(R.id.
ls_contacts);
simpleAdapter =
new SimpleAdapter(getContext(),
mp, R.layout.
item_listview,
new String[]{
"name",
"phone"},
new int[]{R.id.
tv_item_list_name,R.id.
tv_item_list_number} );
ls_contacts.setAdapter(
simpleAdapter); Uri uri=Uri.
parse(
"content://com.android.contacts/raw_contacts"); Cursor cs=
cr.query(uri,
null,
null,
null,
null,
null);
while(cs.moveToNext()){
//拿到联系人id 跟name
int id=cs.getInt(cs.getColumnIndex(
"_id")); String name=cs.getString(cs.getColumnIndex(
"display_name"));
//得到这个id的所有数据(data表)
Uri uri1=Uri.
parse(
"content://com.android.contacts/raw_contacts/"+id+
"/data"); Cursor cs2=
cr.query(uri1,
null,
null,
null,
null,
null); Map<String,String> maps=
new HashMap<>();
//实例化一个map
while ( cs2.moveToNext()){
//得到data这一列 ,包括很多字段
String data1=cs2.getString(cs2.getColumnIndex(
"data1"));
//得到data中的类型
String type=cs2.getString(cs2.getColumnIndex(
"mimetype")); String str=type.substring(type.indexOf(
"/")+
1,type.length());
//截取得到最后的类型
if(
"name".equals(str)){
//匹配是否为联系人名字
maps.put(
"name",data1); }
if(
"phone_v2".equals(str)){
//匹配是否为电话
maps.put(
"phone",data1); } Log.
i(
"test",data1+
" "+type); }
mp.add(maps);
//将map加入list集合中
}
simpleAdapter.notifyDataSetChanged();
//通知适配器发生数据改变
return view; } }
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.INTERNET"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:id="@+id/tv_item_list_name" /> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:id="@+id/tv_item_list_number" /> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:id="@+id/tv_item_list_id" />
<ListView android:layout_width="match_parent" android:id="@+id/ls_contacts" android:layout_height="wrap_content"> </ListView>