读取手机内联系人信息
来源:互联网 发布:php接口开发教程 编辑:程序博客网 时间:2024/05/03 02:11
这里我们将读取出来的联系人信息显示在ListView中。
第一步,编写布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/contacts_view" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView></LinearLayout>
接下来是MainActivity中的代码:
public class MainActivity extends AppCompatActivity { ArrayAdapter<String> adapter; List<String> contactsList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView contactsView = (ListView) findViewById(R.id.contacts_view); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, contactsList); contactsView.setAdapter(adapter); if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.READ_CONTACTS}, 1); } else{ readContacts(); } } private void readContacts() { Cursor cursor = null; try { //查询联系人数据 cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null); if(cursor != null){ while (cursor.moveToNext()){ //获取联系人的姓名 String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); //获取联系人的电话号码 String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); contactsList.add(displayName + "\n" + number); } adapter.notifyDataSetChanged(); } } catch (Exception e) { e.printStackTrace(); } finally { if(cursor != null){ cursor.close(); } } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ readContacts(); } else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: } }}
首先获取了ListView控件的实例,并给它设置好了适配器,然后开始条用运行时权限的处理逻辑,因为READ_CONTACTS权限属于危险权限(在前面的一篇博客中我有详细的说明)。最后调用readContacts()方法来读取联系人信息,这里使用了ContentResolver的qury()方法来查询联系人数据,这个方法和SQLiteDatabase的差不多,就是第一个参数有不同,前者是接受一个Uri参数,后者则是接收表名参数。然后将取出的数据添加到ListView的数据源中,并通知刷新一下ListView。最后要记得将Cursor对象关掉。
最后一步,在AndroidManifeat.xml中添加读取系统联系人的权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
阅读全文
0 0
- 读取手机内联系人信息
- 读取手机联系人信息
- 读取手机联系人信息
- 读取手机联系人信息
- Android 读取手机联系人信息
- Android获取手机内联系人信息
- [android开发]ContentResolver读取手机联系人信息
- 自定义listview读取手机联系人信息
- 利用Contacts Provider读取手机联系人信息
- Android项目——读取手机联系人信息
- 由系统的内容提供器读取手机联系人信息
- 分页读取手机联系人
- android 读取手机联系人
- 方便快捷读取手机联系人
- 读取手机联系人
- 读取手机联系人
- 读取手机的联系人
- 读取手机联系人
- Oracle之DML
- kmp与exkmp算法讲解
- HDOJ1385 Minimum Transport Cost Floyed简单题
- Inversion
- Java八大排序算法之选择排序
- 读取手机内联系人信息
- 关于caffe与深入理解计算机系统的一个问题
- 8.20(军训DAY 4)
- zzuli 2177 Contest
- ffplay之音视频同步
- js柯里化
- 关联查询---Mybatis学习笔记(九)
- 2017CCPC网络选拔赛 1003-Friend-Graph
- 《如何阅读一本书》—— 读后总结