2011-12-20 153 views
3

我正在嘗試將聯繫人添加到電話地址簿中。
我已經成功了:我添加了一個新的聯繫人併爲其分配了一個手機號碼。將照片添加到聯繫人

現在我需要添加一個JPG我有我的資源目錄中的聯繫人作爲聯繫人照片。
我正在尋找教程,但找不到任何。

我需要定位舊手機,所以我需要使用舊的Contacts API。

任何人都可以幫忙嗎?

ContentValues contact = new ContentValues(); 

contact.put(People.NAME, "testContact"); 
Uri insertUri = activity.getContentResolver().insert(People.CONTENT_URI, contact); 

Uri phoneUri = Uri.withAppendedPath(insertUri, People.Phones.CONTENT_DIRECTORY); 
contact.clear(); 
contact.put(People.Phones.TYPE, People.TYPE_MOBILE); 
contact.put(People.NUMBER, "12128911"); 


updateUri = activity.getContentResolver().insert(phoneUri, contact); 

回答

2

我使用新的API 8+,你也可以利用這一點,(對於支持低版本在manifest文件中使用的minSdkVersion你想要的..)

而且我在做什麼是一樣的東西,(我使用.PNG格式位圖)

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bm.compress(Bitmap.CompressFormat.PNG , 75, stream); 

operations.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
      .withValue(ContactsContract.Data.RAW_CONTACT_ID, 9) // here 9 is _ID where I'm inserting image 
      .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
      .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO,stream.toByteArray()) 
      .build()); 

    try { 
     stream.flush(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

這是使用ContactsContract類不適用於舊手機(<2.1) – 2011-12-20 12:54:10

+0

雅,我已經提到,它從8+,這就是爲什麼我告訴你使用這個,並在清單把minsdkversion你想要的.. – user370305 2011-12-20 13:01:15

+0

抱歉,我是Android新手,是否適用於運行Android 1.6,2.1等的手機。我認爲這些庫直到後來的版本才推出。 – 2011-12-20 13:09:59

0
final Uri uri = ContactsContract.Contacts.CONTENT_URI; 
    final String[] projection = new String[] { 
      ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.Contacts.PHOTO_URI 
    }; 
    //boolean mShowInvisible = false; 
    String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'"; 
    String[] selectionArgs = null; 
    final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

    m_curContacts = managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_URI}; 
    myadapter= new MySimpleCursorAdapter(this, R.layout.list_search, m_curContacts, fields, new int []{R.id.textView1,R.id.imageView1}); 

請試試這個代碼可以對你有所幫助。