2011-03-16 133 views
1

我有联系簿上的基本操作问题,看起来像官方的例子不适合我。其中之一:Android联系人:更新,删除,插入

ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
         .withValue(Data.RAW_CONTACT_ID, id) 
         .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
         .withValue(Phone.NUMBER, "1-800-GOOG-411") 
         .withValue(Phone.TYPE, Phone.TYPE_CUSTOM) 
         .withValue(Phone.LABEL, "free directory assistance") 
         .build()); 

这应该添加具有给定id的接触,但我在模拟器中运行这段代码后,没有得到任何新的联系。

我真的很感谢任何指导性答案或指导教程的链接。

+0

您是否指定了读取和写入联系人的权限? – Joset 2011-03-26 00:09:59

回答

1

你应该有以下权限:

<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission> 
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 

你应该有代码(代码后):

try { 
    getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

这将尝试插入/更新联系人

1

刚此代码为您的应用程序实施并试用删除特定联系人列表,

ContentResolver cr = getContentResolver(); 
       Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?" , new String[] { contactsId(your) }, null); 

       if (cur.getCount() > 0) { 

        while (cur.moveToNext()) { 

         try { 
          String lookupKey = cur .getString(cur .getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 
          Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); 
          cr.delete(uri, null, null); 
          setFinish(); 
         } catch (Exception e) { 
          e.getStackTrace(); 
         } 
        } 
       } 
相关问题