android添加联系人(直接添加到联系人数据库)

  1. 添加联系人姓名、手机、头像。。。  
  2. java核心代码  
  3. package com.kaka.addContact;  
  4.   
  5. import java.io.ByteArrayOutputStream;  
  6.   
  7. import android.app.Activity;  
  8. import android.content.ContentUris;  
  9. import android.content.ContentValues;  
  10. import android.graphics.Bitmap;  
  11. import android.graphics.BitmapFactory;  
  12. import android.net.Uri;  
  13. import android.os.Bundle;  
  14. import android.provider.ContactsContract;  
  15. import android.provider.ContactsContract.CommonDataKinds.Email;  
  16. import android.provider.ContactsContract.CommonDataKinds.Im;  
  17. import android.provider.ContactsContract.CommonDataKinds.Phone;  
  18. import android.provider.ContactsContract.CommonDataKinds.Photo;  
  19. import android.provider.ContactsContract.CommonDataKinds.StructuredName;  
  20. import android.provider.ContactsContract.Contacts.Data;  
  21. import android.provider.ContactsContract.RawContacts;  
  22.   
  23. public class Main extends Activity {  
  24.     /** Called when the activity is first created. */  
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.main);  
  29.         boolean result = insert("kaka""110""[email protected]",  
  30.                 "111");  
  31.         System.out.println("insert result " + result);  
  32.     }  
  33.   
  34.     public boolean insert(String given_name, String mobile_number,  
  35.             String work_email, String im_qq) {  
  36.         try {  
  37.             ContentValues values = new ContentValues();  
  38.   
  39.             // 下面的操作会根据RawContacts表中已有的rawContactId使用情况自动生成新联系人的rawContactId  
  40.             Uri rawContactUri = getContentResolver().insert(  
  41.                     RawContacts.CONTENT_URI, values);  
  42.             long rawContactId = ContentUris.parseId(rawContactUri);  
  43.   
  44.             // 向data表插入姓名数据  
  45.             if (given_name != "") {  
  46.                 values.clear();  
  47.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  48.                 values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);  
  49.                 values.put(StructuredName.GIVEN_NAME, given_name);  
  50.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  51.                         values);  
  52.             }  
  53.   
  54.             // 向data表插入电话数据  
  55.             if (mobile_number != "") {  
  56.                 values.clear();  
  57.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  58.                 values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);  
  59.                 values.put(Phone.NUMBER, mobile_number);  
  60.                 values.put(Phone.TYPE, Phone.TYPE_MOBILE);  
  61.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  62.                         values);  
  63.             }  
  64.   
  65.             // 向data表插入Email数据  
  66.             if (work_email != "") {  
  67.                 values.clear();  
  68.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  69.                 values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);  
  70.                 values.put(Email.DATA, work_email);  
  71.                 values.put(Email.TYPE, Email.TYPE_WORK);  
  72.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  73.                         values);  
  74.             }  
  75.   
  76.             // 向data表插入QQ数据  
  77.             if (im_qq != "") {  
  78.                 values.clear();  
  79.                 values.put(Data.RAW_CONTACT_ID, rawContactId);  
  80.                 values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE);  
  81.                 values.put(Im.DATA, im_qq);  
  82.                 values.put(Im.PROTOCOL, Im.PROTOCOL_QQ);  
  83.                 getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  84.                         values);  
  85.             }  
  86.             // 向data表插入头像数据  
  87.             Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(),  
  88.                     R.drawable.icon);  
  89.             final ByteArrayOutputStream os = new ByteArrayOutputStream();  
  90.             // 将Bitmap压缩成PNG编码,质量为100%存储  
  91.             sourceBitmap.compress(Bitmap.CompressFormat.PNG, 100, os);  
  92.             byte[] avatar = os.toByteArray();  
  93.             values.put(Data.RAW_CONTACT_ID, rawContactId);  
  94.             values.put(Data.MIMETYPE, Photo.CONTENT_ITEM_TYPE);  
  95.             values.put(Photo.PHOTO, avatar);  
  96.             getContentResolver().insert(ContactsContract.Data.CONTENT_URI,  
  97.                     values);  
  98.         }  
  99.   
  100.         catch (Exception e) {  
  101.             return false;  
  102.         }  
  103.         return true;  
  104.     }  
  105. }  

Java代码   收藏代码
  1. Manifest中添加读写联系人数据权限  
  2. "1.0" encoding="utf-8"?>  
  3. "http://schemas.android.com/apk/res/android"  
  4.       package="com.kaka.addContact"  
  5.       android:versionCode="1"  
  6.       android:versionName="1.0">  
  7.     "8" />  
  8.   
  9.     "@drawable/icon" android:label="@string/app_name">  
  10.         ".Main"  
  11.                   android:label="@string/app_name">  
  12.               
  13.                 "android.intent.action.MAIN" />  
  14.                 "android.intent.category.LAUNCHER" />  
  15.               
  16.           
  17.   
  18.       
  19.     "android.permission.READ_CONTACTS" />  
  20.     "android.permission.WRITE_CONTACTS" />  
  21.  

你可能感兴趣的:(Android学习)