ContentResolver插入聯絡人
阿新 • • 發佈:2018-12-14
【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" />