AndroidはContentProviderで連絡先情報を取得

2928 ワード

/**
 * @author myh
 * @create 2018/9/27 15:44
 * @Description
 */
public class a extends AppCompatActivity {
    private ContentResolver cr;
    private List> data;
    private ListView lv_main_list;
    private SimpleAdapter simpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a);
        lv_main_list = (ListView) findViewById(R.id.lv_main_list); //       
        cr = getContentResolver();
        data = new ArrayList>();
        //   
        simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_list_item_2, new String[]{"names", "phones"}, new int[]{android.R.id.text1, android.R.id.text2});
        lv_main_list.setAdapter(simpleAdapter);
    }

    public void getContacts(View view) {
        Cursor cursor = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), null, null, null, null);
        while (cursor.moveToNext()) {
            Map map = new HashMap();
            int id = cursor.getInt(cursor.getColumnIndex("_id"));
            String displayName = cursor.getString(cursor.getColumnIndex("display_name"));
            Log.i("test", id + " " + displayName);
            map.put("names", displayName);
            //            
            Cursor cursor2 = cr.query(Uri.parse("content://com.android.contacts/raw_contacts/" + id + "/data"), null, null, null, null);
            while (cursor2.moveToNext()) {
                //int type = cursor2.getInt(cursor2.getColumnIndex("mimetype_id"));
                String type = cursor2.getString(cursor2.getColumnIndex("mimetype"));
                String data1 = null;
                if ("vnd.android.cursor.item/phone_v2".equals(type)) {
                    data1 = cursor2.getString(cursor2.getColumnIndex("data1"));
                    Log.i("test", " " + type + " " + data1);
                    map.put("phones", data1);
                }
            }
            data.add(map);
        } //         
        simpleAdapter.notifyDataSetChanged();
    }
}

 
 
//レイアウト
 
リストファイルに連絡先を設定する権限が必要です(AndroidManifest.xml)