Android讀寫聯系人數據(內容提供者應用)
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btn_getcontacts"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:onClick="read_click"
android:layout_weight="1"
android:text="讀取聯系人" />
<Button
android:id="@+id/btn_insertcontact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:onClick="insert_click"
android:layout_weight="1"
android:text="寫入聯系人" />
</LinearLayout>
</LinearLayout>
核心Activity 兩種方式:
package com.example.readcontacts;
import java.util.ArrayList;
import java.util.List;
import com.pas.domain.ContactModel;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.app.Activity;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
LinearLayout ll;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ll = (LinearLayout) findViewById(R.id.ll);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void read_click(View view)
{
getContactList();
}
public void insert_click(View view)
{
addContact();
Toast.makeText(this, "添加成功", Toast.LENGTH_LONG).show();
}
private void addContact()
{
ContentResolver resolver = getContentResolver();
ArrayList<ContentProviderOperation> operations=new ArrayList<ContentProviderOperation>();
Uri raw_contacts_uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri data_uri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation op1=ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME,null)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,null).build();
operations.add(op1);
ContentProviderOperation op2=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "王剛")
.build();
operations.add(op2);
ContentProviderOperation op3=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "990009")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM)
.build();
operations.add(op3);
ContentProviderOperation op4=ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.DATA, "ping@12.com")
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_CUSTOM)
.build();
operations.add(op4);
try {
resolver.applyBatch(ContactsContract.AUTHORITY, operations);
} catch (Exception e) {
e.printStackTrace();
}
// ContentValues raw_values = new ContentValues();
//
// Cursor cursor = resolver.query(raw_contacts_uri, new String[]
// { "_id" }, null, null, null);
// cursor.moveToLast();
// int lastid = cursor.getInt(0);
// int newid = lastid + 1;
//
// raw_values.put("contact_id", newid);
// resolver.insert(raw_contacts_uri, raw_values);
//
// // 電話插入
// ContentValues phonevalues = new ContentValues();
// phonevalues.put("data1", "898989");
// phonevalues.put("mimetype", "vnd.android.cursor.item/phone_v2");
// phonevalues.put("raw_contact_id", newid);
// resolver.insert(data_uri, phonevalues);
//
// // email插入
// ContentValues emailvalues = new ContentValues();
// emailvalues.put("data1", "ping@126.com");
// emailvalues.put("mimetype", "vnd.android.cursor.item/email_v2");
// emailvalues.put("raw_contact_id", newid);
// resolver.insert(data_uri, emailvalues);
//
// // name插入
// ContentValues namevalues = new ContentValues();
// namevalues.put("data1", "王剛");
// namevalues.put("mimetype", "vnd.android.cursor.item/name");
// namevalues.put("raw_contact_id", newid);
// resolver.insert(data_uri, namevalues);
}
private void getContactList()
{
ContentResolver resolver = getContentResolver();
Uri raw_contacts_uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri data_uri = Uri.parse("content://com.android.contacts/data");
ll.removeAllViews();
Cursor cursor = resolver.query(raw_contacts_uri, null, null, null, null);
while (cursor.moveToNext())
{
String contactid = cursor.getString(cursor.getColumnIndex("contact_id"));
System.out.println(contactid + "\n");
if (null != contactid)
{
StringBuffer sb = new StringBuffer("聯系人ID:");
sb.append(contactid).append(" ");
Cursor data_cursor = resolver.query(data_uri, null, "raw_contact_id=?", new String[]
{ contactid }, null);
while (data_cursor.moveToNext())
{
String data1 = data_cursor.getString(data_cursor.getColumnIndex("data1"));
String mimetype = data_cursor.getString(data_cursor.getColumnIndex("mimetype"));
System.out.println("mimetype=" + mimetype + ";data1=" + data1);
sb.append(data1).append(" ");
}
data_cursor.close();
TextView tv = new TextView(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setText(sb.toString());
ll.addView(tv);
}
}
cursor.close();
}
}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!