public void onClick(View v) { if(v.getId()==R.id.button1) { list = new ArrayList<>(); ContentResolver resolver = getContentResolver(); Uri uri = ContactsContract.Contacts.CONTENT_URI; Cursor cursor = resolver.query(uri, null, null, null, null); while (cursor.moveToNext()) { map = new HashMap<>(); //获取联系人姓名,手机号码 @SuppressLint("Range") String cName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); // Toast.makeText(MainActivity.this, cName, Toast.LENGTH_SHORT).show(); map.put("name", cName); @SuppressLint("Range") String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); // Toast.makeText(MainActivity.this, id, Toast.LENGTH_SHORT).show(); Cursor phone = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{id}, null); StringBuffer sbphone = new StringBuffer(); phone.move(0); while (phone.moveToNext()) { @SuppressLint("Range") String phones = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // Toast.makeText(MainActivity.this, phones, Toast.LENGTH_SHORT).show(); map.put("phone", sbphone.append(phones + " ".toString())); } list.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.layout, new String[]{"name", "phone"}, new int[]{R.id.textView3, R.id.textView4}); listView.setAdapter(adapter); }解释这段代码
时间: 2024-02-14 15:35:11 浏览: 137
实验三 UI人机界面交互
这段代码实现了获取Android设备上联系人信息的功能,并将其展示在一个ListView上。具体实现过程如下:
1. 初始化一个空的ArrayList用于存储联系人信息。
2. 获取ContentResolver对象并使用ContactsContract.Contacts.CONTENT_URI查询联系人信息,返回一个Cursor对象。
3. 遍历Cursor对象,并通过getColumnIndex方法获取联系人姓名和ID。
4. 使用联系人ID查询该联系人的手机号码,并将其放入一个StringBuffer中。
5. 将联系人姓名和手机号码存储到一个HashMap中,并将其放入ArrayList中。
6. 使用SimpleAdapter将ArrayList中的联系人信息展示在ListView上。
具体实现细节可以参考注释。
阅读全文