1.在AndroidManifest.xml设置访问通讯的权限:
//添加访问通讯录的权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
2.模拟获取通讯录的名称与电话号码,然后用ListView进行显示,现在xml文件中添加ListView,
<ListView
android:id="@+id/contact_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
3.在Activity中,配置ListView(其中代码不是全部,只贴核心代码)
private ListView listView;
private ArrayAdapter<String> adapter; //适配器
List<String> contactList = new ArrayList<String>(); //通讯获取的数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.contact_listview);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactList);
listView.setAdapter(adapter);
/*获取通讯录数据
* 1.先判断是否已经有读取通讯录的权限
* 2.如果没有的话,询问用户,如果有的话,直接读取通讯录的数据*/
//1
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED ) {
//未获得权限,询问用户
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 1);
} else {
//已经权限
readContacts();
}
}
//读取通讯录数据
public void readContacts() {
Cursor contactCursor = null;
try {
contactCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if ( contactCursor != null ) {
while (contactCursor.moveToNext()) {
//读取通讯录数据
String name = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contactList.add(name + "\n" + phoneNumber);
}
adapter.notifyDataSetChanged(); //刷新ListView
}
}catch ( SecurityException e) {
e.printStackTrace();
}
}
//权限选择结果回调
@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, "你不能读取用户通讯录", Toast.LENGTH_SHORT).show();
}
}
break;
default:
break;
}
}
OK!
网友评论