效果图:
Java代码:
- import android.content.ContentResolver;
- import android.database.Cursor;
- import android.provider.ContactsContract;
- import android.widget.AdapterView;
- import android.widget.AutoCompleteTextView;
- public class EX05_09 extends Activity {
- private AutoCompleteTextView myAutoCompleteTextView;
- private TextView myTextView1;
- private Cursor contactCursor;
- private ContactsAdapter myContactsAdapter;
- public static final String[] PEOPLE_PROJECTION = new String[]{
- ContactsContract.Contacts._ID,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.Contacts.DISPLAY_NAME
- };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- myAutoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.myAutoCompleteTextView);
- myTextView1 = (TextView)findViewById(R.id.myTextView1);
- ContentResolver content = getContentResolver();
- contactCursor = content.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI,PEOPLE_PROJECTION, null, null, "" );
- myContactsAdapter = new ContactsAdapter(this, contactCursor);myAutoCompleteTextView.setAdapter(myContactsAdapter);myAutoCompleteTextView.setOnItemClickListener ( newAdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, intarg2, long arg3) {
- Cursor c = myContactsAdapter.getCursor();
- c.moveToPosition(arg2);
- String number = c.getString ( c.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER) );
- numbernumber = number == null ? "无输入电话" : number;myTextView1.setText ( c.getString ( c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME) )+ "的电话是" + number);
- }
- } );
- }
- }
src/irdc.ex05_09/ContactsAdapter.java
Java代码:
- import android.content.ContentResolver;
- import android.database.Cursor;
- import android.provider.ContactsContract;
- public class ContactsAdapter extends CursorAdapter {
- private ContentResolver mContent;
- public ContactsAdapter(Context context, Cursor c) {
- super(context, c);
- mContent = context.getContentResolver();
- }
- @Override
- public void bindView(View view, Context context, Cursor cursor){
- ((TextView) view).setText ( cursor.getString (cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME) ) );
- }
- @Override
- public View newView(Context context, Cursor cursor, ViewGroupparent) {
- final LayoutInflater inflater =LayoutInflater.from(context);
- final TextView view = (TextView)inflater.inflate(android.R.layout.simple_dropdown_item_1line, parent,false);
- view.setText ( cursor.getString ( cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME) ) );
- return view;
- }
- @Override
- public String convertToString(Cursor cursor) {
- return cursor.getString ( cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME) );
- }
- @Override
- public Cursor runQueryOnBackgroundThre
ad(CharSequenceconstraint) {
- if (getFilterQueryProvider() != null) {
- returngetFilterQueryProvider().runQuery(constraint);
- }
- StringBuilder buffer = null;
- String[] args = null;
- if (constraint != null) {
- buffer = new StringBuilder();
- buffer.append("UPPER(");
- buffer.append(ContactsContract.Contacts.DISPLAY_NAME);
- buffer.append(") GLOB ?");
- args = new String[] {
- constraint.toString().toUpperCase() + "*"
- };
- }
- return mContent.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI,EX05_09.PEOPLE_PROJECTION, buffer == null ? null :buffer.toString(), args, "" );
- }
- }
Java代码:
- <uses-permissionandroid:name="android.permission.READ_CONTACTS"></uses-permission>
通过ContentResolver还可以添加、修改、删除通讯录中的信息;并且通过它还可以访问audio、video、images等数据。相应方法展示如下:
添加:public final Uri insert(Uri uri,ContentValues values),ContentValue.put(key,value) ,其中key为字段名称,value为添加的数据。
修改:public final int update(Uri uri,ContentValues values,String where ,String[] selectionArgs),其中where为sql where 后面的条件字符串。selectionArgs为where里的数据。
删除:public final int delete(Uri uri,String where,String[] selectionArgs).
下面用代码介绍使用ContentValue.put()方法。通过程序添加通讯录里的联系人的资料。