どのように特定の問合せ電話番号を連絡先のId
-
10-12-2019 - |
質問
ここで私のお名前が表示されリストの表示も行います。をクリックするとリストを取得しま ContactName
や Contact Id
.からいもフェッチPhone number
られていますが、 Contact ID
または Contact name
ください助けてくれます。
こちらは自分のコード
void ReadContacts(String sort) {
final Uri uri = ContactsContract.Contacts.CONTENT_URI;
final String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
//boolean mShowInvisible = false;
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
String[] selectionArgs = null;
final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
m_curContacts = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME};
m_slvAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
m_curContacts,
fields,
new int[] {android.R.id.text1});
m_slvAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
Log.d(LOG_TAG, "runQuery constraint:"+constraint);
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'" +
" AND "+ ContactsContract.Contacts.DISPLAY_NAME + " LIKE '%"+constraint+"%'";
String[] selectionArgs = null;//new String[]{"'1'"};//, };
Cursor cur = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
return cur;
}
});
m_lvContacts.setAdapter(m_slvAdapter);
// cur.close();
}
public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
ContentResolver cr;
Cursor cursor = (Cursor) m_lvContacts.getItemAtPosition(position);
String szDisplayName = cursor.getString(cursor.getColumnIndexOrThrow( ContactsContract.Contacts.DISPLAY_NAME));
String szId = cursor.getString(cursor.getColumnIndexOrThrow( ContactsContract.Contacts._ID));
int nId = cursor.getInt(cursor.getColumnIndexOrThrow( ContactsContract.Contacts._ID));
Log.d(LOG_TAG, "Item click:"+position+" szId:"+szId+" nId:"+nId+" Data:"+szDisplayName);
Toast.makeText(getBaseContext(), "Item click:"+phoneNumber+" szId:"+szId+" nId:"+nId+" Data:"+szDisplayName, Toast.LENGTH_SHORT).show();
}
解決
これを試してみてください
ArrayList<String> phones = new ArrayList<String>();
Cursor cursor = mContentResolver.query(
CommonDataKinds.Phone.CONTENT_URI,
null,
CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (cursor.moveToNext())
{
phones.add(cursor.getString(cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER)));
}
cursor.close();
return(phones);
. 他のヒント
これを試してみてください
public void getNameUsingContactId(String contactId){
String cContactIdString = ContactsContract.Contacts._ID;
Uri cCONTACT_CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
String cDisplayNameColumn = ContactsContract.Contacts.DISPLAY_NAME;
String selection = cContactIdString + " = ? ";
String[] selectionArgs = new String[]{String.valueOf(contactId)};
Cursor cursor = mContext.getContentResolver().query(cCONTACT_CONTENT_URI, null, selection, selectionArgs, null);
if ((cursor != null) && (cursor.getCount() > 0)) {
cursor.moveToFirst();
while ((cursor != null) && (cursor.isAfterLast() == false)) {
if (cursor.getColumnIndex(cContactIdString) >= 0) {
if (contactId.equals(cursor.getString(cursor.getColumnIndex(cContactIdString)))) {
String name = cursor.getString(cursor.getColumnIndex(cDisplayNameColumn));
break;
}
}
cursor.moveToNext();
}
}
if (cursor != null)
cursor.close();
}
. データテーブルに音声を見つけることができます。RawContactsテーブル(CONTERIASを基準として接続IDを使用)に対応するRAWコンタクトIDを見つけて、これらのRAW連絡先IDを使用してデータテーブルを照会します。PhoneNumberには、特定のMIMEタイプ(現在はドキュメントから離れて)があります。 これが役立つことを願っています!
TIPS:Emulator / DeviceからContacts2.dbデータベースをコピーし、Squirrel(SQLite JDBCドライバ)を使用して連絡先データベース内のPoke Awardを使用します。DBは/データ/データ/リスト内の連絡先を探します)。
みんな私は答えを得ました:
必要な場合は、このコードを使用してください。
Cursor cursor = (Cursor) m_lvContacts.getItemAtPosition(position);
String szDisplayName = cursor.getString(cursor.getColumnIndexOrThrow( ContactsContract.Contacts.DISPLAY_NAME));
String szId = cursor.getString(cursor.getColumnIndexOrThrow( ContactsContract.Contacts._ID));
int nId = cursor.getInt(cursor.getColumnIndexOrThrow( ContactsContract.Contacts._ID));
long l = Long.parseLong(szId);
int type=ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;
cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"='"+szId+"'",
null, null);
int phoneNumberIndex = cursor
.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);
Log.d(TAG, String.valueOf(cursor.getCount()));
if (cursor != null) {
Log.v(TAG, "Cursor Not null");
try {
if (cursor.moveToNext()) {
Log.v(TAG, "Moved to first");
Log.v(TAG, "Cursor Moved to first and checking");
phoneNumber = cursor.getString(phoneNumberIndex);
System.out.println("HAGSd"+phoneNumber);
}
} finally {
Log.v(TAG, "In finally");
cursor.close();
}
. public static final String contactIdByPhoneNumber(Context ctx, String phoneNumber) {
String contactId = null;
if (phoneNumber != null && phoneNumber.length() > 0) {
ContentResolver contentResolver = ctx.getContentResolver();
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
String[] projection = new String[] { PhoneLookup._ID };
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
contactId = cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
cursor.close();
}
}
return contactId;
}
. 所属していません StackOverflow