黑马程序员技术交流社区

标题: Android:查询和添加联系人 [打印本页]

作者: shihao    时间: 2016-1-23 18:01
标题: Android:查询和添加联系人
  1. package com.ysh.contacts;

  2. import android.app.Activity;
  3. import android.content.ContentValues;
  4. import android.database.Cursor;
  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;

  9. public class MainActivity extends Activity {

  10.         @Override
  11.         protected void onCreate(Bundle savedInstanceState) {
  12.                 super.onCreate(savedInstanceState);
  13.                 setContentView(R.layout.activity_main);
  14.         }

  15.         private void printCursor(Cursor cursor) {
  16.                 if(cursor != null && cursor.getCount() > 0) {
  17.                        
  18.                         while(cursor.moveToNext()) {
  19.                                
  20.                                 int columnCount = cursor.getColumnCount(); // 列的总数
  21.                                
  22.                                 for (int i = 0; i < columnCount; i++) {
  23.                                         String columnName = cursor.getColumnName(i);        // 取对应i位置的列的名称
  24.                                         String columnValue = cursor.getString(i);                 // 取出对应i位置的列的值
  25.                                 }
  26.                         }
  27.                         cursor.close();
  28.                 }
  29.         }

  30.         /**
  31.          * 查询联系人
  32.          * @param v
  33.          */
  34.         public void queryContacts(View v) {
  35.                 // 1. 去raw_contacts表中取所有联系人的_id
  36.                 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
  37.                 Uri dataUri = Uri.parse("content://com.android.contacts/data");
  38.                
  39.                 Cursor cursor = getContentResolver().query(uri, new String[]{"_id"}, null, null, null);
  40.                
  41.                 if(cursor != null && cursor.getCount() > 0) {
  42.                        
  43.                         while(cursor.moveToNext()) {
  44.                                 int id = cursor.getInt(0);
  45.                                 // 2. 去data表中根据上面取到的_id查询对应id的数据.
  46.                                
  47.                                 String selection = "raw_contact_id = ?";
  48.                                 String[] selectionArgs = {String.valueOf(id)};
  49.                                 Cursor c = getContentResolver().query(dataUri, new String[]{"data1", "mimetype"},
  50.                                                 selection, selectionArgs, null);
  51.                                                
  52.                                 if(c != null && c.getCount() > 0) {
  53.                                        
  54.                                         while(c.moveToNext()) {
  55.                                                 String mimetype = c.getString(1);                // 当前取的是mimetype的值
  56.                                                 String data1 = c.getString(0);                        // 当前取的是data1数据
  57.                                                
  58.                                                 if("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
  59.                                                         Log.i(TAG, "号码: " + data1);
  60.                                                 } else if("vnd.android.cursor.item/name".equals(mimetype)) {
  61.                                                         Log.i(TAG, "姓名: " + data1);
  62.                                                 } else if("vnd.android.cursor.item/email_v2".equals(mimetype)) {
  63.                                                         Log.i(TAG, "邮箱: " + data1);
  64.                                                 }
  65.                                         }
  66.                                         c.close();
  67.                                 }
  68.                         }
  69.                         cursor.close();
  70.                 }

  71.         }
  72.         /**
  73.          * 添加联系人
  74.          * @param v
  75.          */
  76.         public void addContacts(View v) {
  77.                 Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
  78.                 Uri dataUri = Uri.parse("content://com.android.contacts/data");
  79.                 // 1. 在raw_contacts表中添加一个记录
  80.                
  81.                 // 取raw_contacts表中contact_id的值
  82.                 Cursor cursor = getContentResolver().query(uri, new String[]{"contact_id"}, null, null, "contact_id desc limit 1");
  83.                 if(cursor != null && cursor.moveToFirst()) {
  84.                         int contact_id = cursor.getInt(0);
  85.                         contact_id ++;
  86.                         cursor.close();
  87.                        
  88.                         ContentValues values = new ContentValues();
  89.                         values.put("contact_id", contact_id);
  90.                         getContentResolver().insert(uri, values);

  91.                         // 2. 根据上面添加记录的id, 取data表中添加三条数据
  92.                        
  93.                         // 存号码
  94.                         values = new ContentValues();
  95.                         values.put("mimetype", "vnd.android.cursor.item/phone_v2");
  96.                         values.put("data1", "10086");
  97.                         values.put("raw_contact_id", contact_id);
  98.                         getContentResolver().insert(dataUri, values);
  99.                        
  100.                         // 存姓名
  101.                         values = new ContentValues();
  102.                         values.put("mimetype", "vnd.android.cursor.item/name");
  103.                         values.put("data1", "中国移动");
  104.                         values.put("raw_contact_id", contact_id);
  105.                         getContentResolver().insert(dataUri, values);
  106.                        
  107.                         // 存姓名
  108.                         values = new ContentValues();
  109.                         values.put("mimetype", "vnd.android.cursor.item/email_v2");
  110.                         values.put("data1", "10086@kengni.com");
  111.                         values.put("raw_contact_id", contact_id);
  112.                         getContentResolver().insert(dataUri, values);
  113.                 }

  114.         }
  115. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2