С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
#1

Как в одном query обращаться к столбцам, принадлежащим к разным контент-провайдерам? - Программирование Android

15.03.2014, 13:47. Просмотров 602. Ответов 0
Метки нет (Все метки)

Нужно в ОДНОМ query получить cursor, в который будут включены все имеющиеся контакты, со столбцами Contacts._ID, Contacts.DISPLAY_NAME, CommonDataKinds.Email.ADDRESS, CommonDataKinds.Photo.PHOTO_URI. (заказчик не разрешает использовать несколько курсоров и формировать нормальный ArrayList). Т.е. два последние столбца относятся к другим таблицам и если их включать в projection происходит крэш на вызове getContentResolver().query.
Эти данные можно получить также, если использовать CONTENT_URI, находящийся в таблице Data. Но весь гемор в том, что в этой таблице столбец "DATA1" для одних записей хранит номер телефона, для других - email, в зависимости от значения столбца MIMETYPE. 2 таких записи могут относиться к контакту с одним и тем же "DISPLAY_NAME". Т.е., если использовать запрос:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        String[] projection = new String[] { Data._ID, Data.DISPLAY_NAME,
                Data.DATA1, Data.PHOTO_URI };
 
        String selection = "(" + Data.HAS_PHONE_NUMBER + "=1 AND ("
                + Data.MIMETYPE + "=? OR " + Data.MIMETYPE + "=?)) OR " + "("
                + Data.HAS_PHONE_NUMBER + "=0 AND (" + Data.MIMETYPE + "=?))";
 
        Log.d(LOG_TAG, "MainActivity : " + selection);
 
        return getContentResolver().query(
                Data.CONTEN_URI,
                projection,
                selection,
                new String[] { Email.CONTENT_ITEM_TYPE,
                        Phone.CONTENT_ITEM_TYPE, Email.CONTENT_ITEM_TYPE },
                Data.DISPLAY_NAME);
то в случае если у контакта есть и email и телефон, в курсоре будут ДВЕ таких записи с одинаковыми именами (если проверять наличие у него чего-то одного, то допустим, все контакты у которых email'ов нет в набор НЕ попадут).

Поэтому единственно правильным решением является получение курсора по записям из таблицы Contacts (т.е. использовать Contacts.CONTENT_URI), в которой нет записей с одинаковыми именами (т.к. это готовые контакты, которые агрегируют в себе один или несколько RawContacts). Но как при этом в этом же query получать значения из столбцов CommonDataKinds.Email.ADDRESS, CommonDataKinds.Photo.PHOTO_URI, относящихся к контакту с текущим "_ID" из Contacts ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 13:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в одном query обращаться к столбцам, принадлежащим к разным контент-провайдерам? (Программирование Android):

Как из одного метода обращаться к разным TextBox - C#
Имеется метод который в ходе своего выполнения выводит инфу в textbox. А можно ли как то этому методу передавать нужный мне сейчас textbox....

Как назначить разным программам разные сетевые интерфейсы на одном ПК - Сети
Привет всем, у меня такая задача, надо программам указать с какого wlan интерфейса получать интернет. Есть два сетевых wi-fi адаптера. Один...

Группировка по разным столбцам - MySQL
Доброго дня всем. Помогите, пожалуйста, решить проблему с группировкой. Суть в следующем. Есть бд с таблицей, в которой интересующие два...

Как задать в одном текстблоке разным участкам текста разный цвет и шрифт? - Windows Phone
Как в C# задать в одном текстблоке разным участкам текста разный цвет и шрифт? Платформа: WP 8.1.

Циклическое применение одного преобразования к разным столбцам - Matlab
есть матрица с N числом столбцов. необходимо выполнить вейвлет разложение последовательно по каждому столбцу матрицы. результат каждого...

Необходимо расбрасать закодированные данные 1 столбца по разным столбцам. - SQL Server
Я работаю с SQL совсем недавно, до этого только в ACCESS , там было проще. Есть табл. Код1| Код2 | Показатель 100 | 200 | 5 ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 13:47
Привет! Вот еще темы с ответами:

Две фильтрации по разным столбцам объединить в один запрос с помощью оператора and - C#
Здравствуйте. Я работаю с FireBird подключённому к MVS 2010 и у меня проблема в объединении следующих двух строк: ...

Экспортировать содержимое файла .txt так, чтобы разделенные символом ; данные разносились по разным столбцам - VBA
Подскажите как реализовать так что бы в разные столбцы заносились данные. имеем txt файл с содержимым: - Название 1 - 1...

Вывести количество по разным where в одном результате - SQL Server
Сложно сформулировать, потому сразу пример: денег вася 1 вася 2 вася 3 иван 4 иван 5 иван 6 вот исходная таблица, нужно...

Подсчет количества по разным значениям столбца в одном запросе - SQL Server
Здравствуйте. Подскажите как сделать лучше. допустим есть таблица в которой куча полей, но нас интересуют только поля "status" и "r_date"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.