在写一个群发短信APP时涉及到获取系统的联系人信息,添加联系人的事件为下:
mBtAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,CODE_REQUEST);
}
});
重写onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CODE_REQUEST) {
if (resultCode == RESULT_OK) {
Uri contactUri = data.getData();
Cursor cursor = getContentResolver().query(contactUri, null, null, null, null);
cursor.moveToFirst();
String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String number = getContactNumber(cursor);
if (!TextUtils.isEmpty(number)) {
mContactNums.add(number);
mContactNames.add(contactName);
addTag(contactName);
}
}
}
}
运行,选择Android 6.0的AVD,错误如下:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/0r1-BFADB1C1/1 flg=0x1 }} to activity {
com.example.festival_sms/com.example.festival_sms.SendMsgActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=2377, uid=10064 requires android.permission.READ_CONTACTS, or grantUriPermission()
at android.app.ActivityThread.deliverResults(ActivityThread