android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:text=“添加联系人”/>
ContentProviderActivity.java文件
(3)获取读、写的动态权限
注意:需要在AndroidManifest.xml文件中添加读写的权限获取代码
下面为java代码块
int permissionCheck = ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS);
if(permissionCheck != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},0);
}
public void onRequestPermissionsResult(int requestCode,String permissions[],int[] grantResults){
switch (requestCode){
case 0:
if ((grantResults.length > 0)&&(grantResults[0] == PackageManager.PERMISSION_GRANTED)){
Toast.makeText(ContentProviderActivity.this,“联系人授权成功”,Toast.LENGTH_SHORT).show();
int permissionCheck = ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_CONTACTS);
if(permissionCheck != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_CONTACTS},1);
}
}
break;
case 1:
if ((grantResults.length > 0)&&(grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(ContentProviderActivity.this, “写入联系人权限授权成功”, Toast.LENGTH_SHORT).show();
}
default:
break;
}
}
(4)获取联系人信息
private void getContacts(){
//查询raw_contacts表获得联系人的id
ContentResolver resolver = getContentResolver();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
//查询联系人数据
Cursor cursor = resolver.query(uri,null,null,null,null);
while (cursor.moveToNext()){
//获取联系人姓名,手机号码
String cName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String cNum = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.e("",“姓名:”+cName);
Log.e("",“号码:”+cNum);
Log.e("","==================
===");
}
cursor.close();
}
(5)添加联系人
private void addContact(){
try {
//使用事务添加联系人
Uri uri = Uri.parse(“content://com.android.contacts/raw_contacts”);
Uri dataUri = Uri.parse(“content://com.android.contacts/data”);
ContentResolver resolver = getContentResolver();
ArrayList operations = new ArrayList<>();
//为了便于Android中进行批量数据库操作时效率更高,Android中推荐使用ContentProviderOperation
ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)
.withValue(“account_name”,null)
.build();
operations.add(op1);
//依次是姓名,号码,邮编
ContentProviderOperation op2 =ContentProviderOperation.newInsert(dataUri)
.withValueBackReference(“raw_contact_id”,0)
.withValue(“mimetype”,“vnd.android.cursor.item/name”)
.withValue(“data2”,“Harden”)
.build();
operations.add(op2);
ContentProviderOperation op3 =ContentProviderOperation.newInsert(dataUri)
(“mimetype”,“vnd.android.cursor.item/name”)
.withValue(“data2”,“Harden”)
.build();
operations.add(op2);
ContentProviderOperation op3 =ContentProviderOperation.newInsert(dataUri)