2011-01-25 3 views
4

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의 delete 메소드를 사용합니다. 이 연락처의 전화 번호를 빈 값으로 업데이트하려면 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); 
관련 문제