Tôi đang cố gắng lấy số điện thoại của số liên lạc sau khi tôi đã lấy số ID của họ từ hoạt động được tích hợp sẵn. Tuy nhiên, bất cứ khi nào tôi truy vấn cơ sở dữ liệu bằng cách sử dụng con trỏ trong mã của tôi dưới đây - tôi nhận được hàng không trả về mặc dù có một số điện thoại di động cho số liên lạc tôi đã chọn.Truy xuất số điện thoại liên lạc từ URI trong Android
Bất kỳ ai cũng có thể chỉ cho tôi một hướng tốt hơn hoặc hiển thị ví dụ về cách nhận số điện thoại của số liên lạc SAU KHI nhận ID người dùng của họ?
Mã của tôi:
private Runnable getSMSRunnable() {
return new Runnable() {
public void run() {
Intent i = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(i, CONTACTS_REQUEST_CODE);
}
};
}
Trả về sản lượng Log
content://com.android.contacts/data/6802
Từ đó tôi vượt qua ID (6802) vào một phương pháp được thiết kế để trả lại số điện thoại từ ID với loại đã cho (trong trường hợp này là ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
public static String getContactPhoneNumberByPhoneType(Context context, long contactId, int type) {
String phoneNumber = null;
String[] whereArgs = new String[] { String.valueOf(contactId), String.valueOf(type) };
Log.d(TAG, String.valueOf(contactId));
Cursor cursor = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? and "
+ ContactsContract.CommonDataKinds.Phone.TYPE + " = ?", whereArgs, 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);
}
} finally {
Log.v(TAG, "In finally");
cursor.close();
}
}
Log.v(TAG, "Returning phone number");
return phoneNumber;
}
Lợi nhuận nào null cho một số điện thoại - có nghĩa là nó không thể tìm thấy hàng mà tôi đang cố gắng truy cập - có nghĩa là có gì đó không đúng với truy vấn của tôi - tuy nhiên nếu tôi kiểm tra một số liên lạc có số điện thoại di động nhận được truy vấn 0 hàng?
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn bạn rất nhiều!
Điều này đang hoạt động ngay cả khi lời giải thích của bạn không rõ ràng. Tại sao điện thoại.CONTACT_ID (contact_id) không khớp với CONTACTS._ID (_id) – redochka
Có thể dễ dàng hơn nếu tôi giải thích theo cách này: '_ID' là dành cho cơ sở dữ liệu,' CONTACT_ID' là dành cho ID liên hệ khi bạn không truy vấn bảng cụ thể đó . Không giúp đỡ à? – hwrdprkns
Tóm tắt: Phones._ID == Contacts._ID – redochka