ContentResolver插入联系人
程序员文章站
2024-02-09 16:49:34
...
【1】创建EditText获取里面的值
【2】插入之前,先进行query。来获取当前的contact_id 插入时+1我
【3】insert 插入数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// [1]找到控件
et_email = (EditText) findViewById(R.id.et_email);
et_phone = (EditText) findViewById(R.id.et_phone);
et_username = (EditText) findViewById(R.id.et_username);
}
// 点击按钮 获取用户输入的姓名 邮箱 电话 插入到系统的联系人数据库
public void click(View v) {
// [1]获取姓名 电话 邮箱
String name = et_username.getText().toString().trim();
String phone = et_phone.getText().toString().trim();
String email = et_email.getText().toString().trim();
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri datUri = Uri.parse("content://com.android.contacts/data");
// [2]由于系统联系人的数据库系统已经通过内容提供者暴露出来 所以我们可以直接通过内容解析者操作数据库 ★★★★★
// [2.1]插入之前先查询一下raw_contacts表一共有几条记录 查询出来的记录数+1 就是contact_id的值
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
int count = cursor.getCount();
int contact_id = count + 1; // 代表联系人的id
ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
// [2.2]往raw_contact表里面插入联系人的id
getContentResolver().insert(uri, values);
// [2.3]把name 插入到对应的data表
ContentValues nameValues = new ContentValues();
nameValues.put("raw_contact_id", contact_id); // 告诉系统新插入的数据属于哪个联系人
nameValues.put("data1", name); // 更新data1的数据
nameValues.put("mimetype", "vnd.android.cursor.item/name"); // 告诉系统插入数据的类型
getContentResolver().insert(datUri, nameValues);
// [2.4]把phone 插入到对应的data表
ContentValues phoneValues = new ContentValues();
phoneValues.put("raw_contact_id", contact_id); // 告诉系统新插入的数据属于哪个联系人
phoneValues.put("data1", phone); // 更新data1的数据
phoneValues.put("mimetype", "vnd.android.cursor.item/phone_v2"); // 告诉系统插入数据的类型
getContentResolver().insert(datUri, phoneValues);
// [2.5]把 email 插入到对应的data表
ContentValues emailValues = new ContentValues();
emailValues.put("raw_contact_id", contact_id); // 告诉系统新插入的数据属于哪个联系人
emailValues.put("data1", email); // 更新data1的数据
emailValues.put("mimetype", "vnd.android.cursor.item/email_v2"); // 告诉系统插入数据的类型
getContentResolver().insert(datUri, emailValues);
}
【4】添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
推荐阅读
-
ContentProvider&ContentResolver
-
Android ContentProvider、ContentResolver/ContentObserver 修改监听流程
-
ContentProvider&ContentResolver
-
ContentResolver插入联系人
-
ContentProvider与ContentResolver使用
-
ContentResolver,ContentProvider,ContentObserver使用记录
-
024_Android ContentResolver读取短信并自动填充
-
ContentResolver和ContentProvider
-
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】_php技巧
-
emoji表情无法插入MySQL中_MySQL