내 목록보기에서 연락처 이름을 클릭하면 연락처 데이터를 가져 오려고합니다. 아래 코드에 따라 연락처의 ID를 성공적으로 기록 할 수 있지만 ContactsContract를 사용하여 데이터를 검색하지 못했습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 고정 코드, 지금연락처 ID에서 전화 번호 가져 오기 : android
public void onCreate(Bundle savedInstanceState)
{
Log.v(TAG, "Activity State: onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_manager);
mContactList = (ListView) findViewById(R.id.contactList);
populateContactList();
mContactList.setOnItemClickListener(new OnItemClickListener() {
String strid = Long.toString(id);
Cursor result = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = ?", new String[]{strid}, null);
if (result.moveToFirst()) {
Cursor c = getContentResolver().query(Data.CONTENT_URI,
new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
Data.RAW_CONTACT_ID + "=?" + " AND "
+ Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
new String[] {String.valueOf(strid)}, null);
if(c.moveToFirst()){
int phoneColumn = c.getColumnIndex("data1");
String phoneNumber = c.getString(phoneColumn);
Log.d("DATA",phoneNumber);
}
}
});
}
EDIT 1 일 :
EDIT 2 (별로 소용이 Retrieve Contact Phone Number From URI in Android을 시도했다) 몇 가지 중요한 물건을 잊어 버렸습니다. 이 코드는 Android 개발자 사이트의 ContactManager 예제에서 수정되었습니다. 유효한 ContactID가있는 가정
/**
* Populate the contact list based on account currently selected in the account spinner.
*/
private void populateContactList() {
// Build adapter with contact entries
Cursor cursor = getContacts();
String[] fields = new String[] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor,
fields, new int[] {R.id.contactEntryText});
mContactList.setAdapter(adapter);
}
/**
* Obtains the contact list for the currently selected account.
*
* @return A cursor for for accessing the contact list.
*/
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
그런 질문에서 무엇을 시도 했습니까? – tidbeck
ID를 어떻게 목록에 저장 했습니까? 연락처 테이블에 ID가 있습니까? RawContact 테이블? populateContactList에 대한 코드를 게시 할 수 있습니까? – kingston