读取联系人
我主要说的是 我遇到的坑,
以下是我的 主要方法:
private void getContact() {
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 name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
//获取联系人电话号码
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
ContanctBean contanctBean=new ContanctBean(name,number);
Log.d("info","显示联系人数据=="+name+" "+number);
stringList.add(contanctBean);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(cursor != null){
cursor.close();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch(requestCode){
case 1:
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(Main3Activity.this,"授权成功 读取联系人数据",Toast.LENGTH_LONG).show();
readContacts();
}else {
//您拒绝了权限
Toast.makeText(Main3Activity.this,"您拒绝了 权限",Toast.LENGTH_LONG).show();
}
}
}
然后 运行后,我发现 额 还是 授权失败,哦 ,还有关键一步 ,需要 在 AndroidMainfest.xml 添加读取 联系人的权限:
<!-- 读取联系人权限-->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
OK 这样就可以了,