標籤:
package com.itheima.getcontacts;import com.itheima.getcontacts.domain.Contact;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { /* #連絡人資料庫 * raw\_contacts表: * contact_id:連絡人id * data表:連絡人的具體資訊,一個資訊佔一行 * data1:資訊的具體內容 * raw\_contact_id:連絡人id,描述資訊屬於哪個連絡人 * mimetype_id:描述資訊是屬於什麼類型 * mimetypes表:通過mimetype_id到該表查看具體類型 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //查詢連絡人 public void click(View v){ //通過內容提供者訪問連絡人資料庫 ContentResolver cr = getContentResolver(); //先查詢raw\_contacts表拿到連絡人id,com.android.contacts是連絡人的內容提供者主機名稱,new String[]{"contact_id"}是查詢的欄位id, Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"contact_id"}, null, null, null); while(cursorContactId.moveToNext()){ //擷取連絡人id String contactId = cursorContactId.getString(0); //* 然後拿著連絡人id去data表查詢屬於該連絡人的資訊,new String[]{"data1", "mimetype"}是查詢的欄位,new String[]{contactId}是查詢條件 Cursor cursorData = cr.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1", "mimetype"}, "raw_contact_id = ?", new String[]{contactId}, null); //擷取所有欄位的名字 String[] names = cursorData.getColumnNames(); for (String string : names) { System.out.println(string); } Contact con = new Contact();//Contact自訂的連絡人javabean //* 得到data1欄位的值,就是連絡人的資訊,通過mimetype判斷是什麼類型的資訊 while(cursorData.moveToNext()){ String data1 = cursorData.getString(0); String mimetype = cursorData.getString(1); //通過mimetype的判斷,把data1存入對應的屬性 if("vnd.android.cursor.item/email_v2".equals(mimetype)){ con.setEmail(data1); } else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){ con.setPhone(data1); } else if("vnd.android.cursor.item/name".equals(mimetype)){ con.setName(data1); } } System.out.println(con.toString()); } } }//<uses-permission android:name="android.permission.READ_CONTACTS"/>
package com.itheima.insertcontact;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.ContentResolver;import android.content.ContentValues;import android.database.Cursor;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //插入連絡人 public void click(View v){ ContentResolver cr = getContentResolver(); //先查詢raw_contacts表,擷取最新連絡人的主鍵,然後主鍵+1,就是要插入的連絡人的id Cursor cursorContactId = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"), new String[]{"_id"}, null, null, null); //預設連絡人id就是1 int contact_id = 1; if(cursorContactId.moveToLast()){ //拿到主鍵 int _id = cursorContactId.getInt(0); //主鍵+1,就是要插入的連絡人id contact_id = ++_id; } ContentValues values = new ContentValues(); values.put("contact_id", contact_id); //把連絡人id插入raw_contacts資料庫 cr.insert(Uri.parse("content://com.android.contacts/raw_contacts"), values); values.clear(); values.put("data1", "二bi"); values.put("mimetype", "vnd.android.cursor.item/name"); values.put("raw_contact_id", contact_id); cr.insert(Uri.parse("content://com.android.contacts/data"), values); values.clear(); values.put("data1", "1344567"); values.put("mimetype", "vnd.android.cursor.item/phone_v2"); values.put("raw_contact_id", contact_id); cr.insert(Uri.parse("content://com.android.contacts/data"), values); } }//<uses-permission android:name="android.permission.WRITE_CONTACTS"/>//<uses-permission android:name="android.permission.READ_CONTACTS"/>
android102 查詢,插入連絡人