Я пытаюсь создать список разговоров для SMS-сообщений.Поэтому я читаю «content: // смс / разговоры» и читаю первые несколько сообщений каждого разговора, чтобы найти номера телефонов партнеров по общению.С помощью этих номеров я пытаюсь получить contact_id из ContactsContract.CommonDataKinds.Phone, чтобы получить остальную информацию о человеке из базы данных контактов.
String[] returnVals = new String[] {ContactsContract.CommonDataKinds.Phone.CONTACT_ID};
Cursor pCur = thisContent.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
returnVals,
ContactsContract.CommonDataKinds.Phone.DATA1 + " = \"" + phoneNumber + "\"",
null,
null);
Когда я чередую результаты этого запроса, я вижу, что некоторые контакты не были найдены, хотя они хранятся в базе данных контактов.Например, один номер, который связан с одним из моего списка контактов и находится в Штатах, который, кажется, хранится с тире.Я понимаю, что это может быть проблемой, но другие числа, которые я извлек из потоков, сохраняются так, как они отображаются в текстовых сообщениях, и до сих пор не найдены.
Итак, мои вопросы:
- Это правильный подход?Я что-то пропустил?Есть ли более простой способ добиться этого?
- Что я получу от ContactsContract.CommonDataKinds.Phone - это ссылка на _ID контактного лица.Я полагаю, что не могу справиться с этим как с правильным длинным _ID типа, но как мне это сделать?
- Существует ли учебник по обработке SMS в Android, кроме документации SDK, с точки зрения окружающих задач, подобных этойодин?