String a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
Uri contentUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(contentUri, null, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String num = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(num);
a+=name+num+"\n";
}
tv.setText(a);
}
注意获取电话号码的方法一定是getString 。。。。用getLong 如果你写入的电话号码格式不同获取不到
需要注意权限
除了读写权限之外还有一个
android.permission.GET_ACCOUNTS
我直接用了AndroidUtilCode
PermissionUtils.permission(PermissionConstants.CONTACTS)
.callback(new PermissionUtils.SimpleCallback() {
@Override
public void onGranted() {
String a = "";
Uri contentUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(contentUri, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String num = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
a += name + num + "\n";
}
System.out.println(" 手机联系人: " + a);
}
@Override
public void onDenied() {
}
})
.request();