读取手机联系人,显示到布局里
- 读取联系人在 Android 6.0 以上要动态获取权限
- SDK 小于 23 要在 AndroidManifest.xml 注册权限
示例效果:
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_CONTACTS"/>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:onClick="btnQuery"
android:text="查询联系人"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/LV"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ContentResolver contentResolver;
List<String> datas = new ArrayList<>();
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.LV);
contentResolver = getContentResolver();
}
// 检查权限
public void btnQuery(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED
) {
if (Build.VERSION.SDK_INT >= 23) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 123);
}
} else {
// 查询所有联系人
requestDatas();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 123 && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
requestDatas();
}
}
private void requestDatas() {
datas.clear();
cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
datas.add("id:" + id + " - 姓名:" + displayName + " - 电话:" + number + " ");
}
Toast.makeText(this, "" + datas.size(), Toast.LENGTH_SHORT).show();
cursor.close();
listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, datas));
}
}
}