2011-01-25 160 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); 
相關問題