操作聯繫人

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >


    <Button
        android:onClick="queryContacts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查詢所有聯繫人" />


    <Button
        android:onClick="addContacts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="添加聯繫人" />


</LinearLayout>







import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;


public class MainActivity extends Activity {


private static final String TAG = "MainActivity";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


private void printCursor(Cursor cursor) {
if(cursor != null && cursor.getCount() > 0) {

while(cursor.moveToNext()) {

int columnCount = cursor.getColumnCount(); // 列的總數

for (int i = 0; i < columnCount; i++) {
String columnName = cursor.getColumnName(i); // 取對應i位置的列的名稱
String columnValue = cursor.getString(i); // 取出對應i位置的列的值

Log.i(TAG, "當前是第" + cursor.getPosition() + "行: " + columnName + " = " + columnValue);
}
}
cursor.close();
}
}


/**
* 查詢聯繫人
* @param v
*/
public void queryContacts(View v) {
// 1. 去raw_contacts表中取所有聯繫人的_id
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");

Cursor cursor = getContentResolver().query(uri, new String[]{"_id"}, null, null, null);
// printCursor(cursor);
if(cursor != null && cursor.getCount() > 0) {

while(cursor.moveToNext()) {
int id = cursor.getInt(0);
// 2. 去data表中根據上面取到的_id查詢對應id的數據.

String selection = "raw_contact_id = ?";
String[] selectionArgs = {String.valueOf(id)};
Cursor c = getContentResolver().query(dataUri, new String[]{"data1", "mimetype"}, 
selection, selectionArgs, null);
if(c != null && c.getCount() > 0) {

while(c.moveToNext()) {
String mimetype = c.getString(1); // 當前取的是mimetype的值
String data1 = c.getString(0); // 當前取的是data1數據

if("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
Log.i(TAG, "號碼: " + data1);
} else if("vnd.android.cursor.item/name".equals(mimetype)) {
Log.i(TAG, "姓名: " + data1);
} else if("vnd.android.cursor.item/email_v2".equals(mimetype)) {
Log.i(TAG, "郵箱: " + data1);
}
}
c.close();
}
}
cursor.close();
}


}

public void addContacts(View v) {
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
// 1. 在raw_contacts表中添加一個記錄

// 取raw_contacts表中contact_id的值
Cursor cursor = getContentResolver().query(uri, new String[]{"contact_id"}, null, null, "contact_id desc limit 1");
if(cursor != null && cursor.moveToFirst()) {
int contact_id = cursor.getInt(0);
contact_id ++;
cursor.close();

ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
getContentResolver().insert(uri, values);


// 2. 根據上面添加記錄的id, 取data表中添加三條數據

// 存號碼
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", "10086");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);

// 存姓名
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", "中國移動");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);

// 存姓名
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", "[email protected]");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
}


}
}

發佈了34 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章