2011-01-25 165 views
4

我想从android数据库中删除(例如手机号码)。为此我通过查询如下如何在android中删除联系人的电话号码?

public class ContactDemo extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String number = "2222"; 
     Long id = getID(number); 
     int i = getContentResolver().delete(RawContacts.CONTENT_URI, RawContacts._ID+"=?", new String[]{id.toString()}); 
     System.out.println("Deleted"+i); 
    } 
    public Long getID(String number){  

     Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
     Cursor c = getContentResolver().query(uri, new String[]{PhoneLookup._ID}, null, null, null); 
     while(c.moveToNext()){ 
      return c.getLong(c.getColumnIndex(PhoneLookup._ID)); 
     } 
     return null; 
    }  
} 

但它是删除整个联系人。

我该如何删除该电话号码(不是全部联系人)?

回答

6

您使用ContentResolver的删除方法,以便删除整个联系人。要将此联系人的电话号码更新为空值,您需要使用ContactsContact API。

http://developer.android.com/reference/android/provider/ContactsContract.Data.html

通过提供接触原始ID和Phone.CONTENT_ITEM_TYPE,你只能请求属于该联系人的电话号码,然后将它们全部删除。

ArrayList<ContentProviderOperation> ops = Lists.newArrayList(); 
ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI) 
      .withSelection(Data._ID + "=? and " + Data.MIMETYPE + "=?", new String[]{String.valueOf(contactId), Phone.CONTENT_ITEM_TYPE}) 
      .build()); 
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
相关问题