Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
Android Пройти уровень, головоломка http://www.cyberforum.ru/android-dev/thread1119671.html
Передираю уровни для игры. Для открытия уровня нужно пройти предыдущий. Дошел до 14 и кажется что он не проходим.
Android Тема диплома Добрый день! Очень прошу вашей помощи, форумчане! Мне предложили тему для диплома "Шифрование смс сообщений под ОС Андроид". Но аналогов в интернете достаточно. Может быть можно как-то усложнить, добавить новые функции в программу. Если есть какие-то мысли, поделитесь пожалуйста. http://www.cyberforum.ru/android-dev/thread1119651.html
Вывод данных из БД в виде таблицы Android
Как реализуются такие таблицы, как в этом приложении? http://www.androidpit.ru/ru/android/market/apps/app/com.sorokinkirill.teacherorganizer/ Если с помощью TableLayout, то поделитесь ссылкой на пример. Является ли возможным разным ячейкам таблицы присвоить разные обработчики нажатий?
Android Eclipse в новом проекте не создает MainActivity
Привык, что при создании проекта в эклипс мгновенно создается активити, а теперь - нет. Каталог src пустой. Ни пакета, ни класса внутри него. Заново скачивал эклипс с сайта разработчиков - бесполезно.
Android Получение информации об устройстве http://www.cyberforum.ru/android-dev/thread1119598.html
Как программно добраться до сведений об устройстве, в частности, до имени устройства, названия сети, номера телефона и пр.?
Android Прием сериализованного объекта на сервере Привет форумчане, столкнулся с проблемой передачи сериализованного объекта через сокет. При приёме на сервере выкидывает исключение java.lang.ClassNotFoundException: com.example.appclient.RawContact На сколько я понял, когда шифруется класс он ещё дополняется пакетом. Кто подскажет как этого избежать. Есть 2 абсолютно одинаковых класса, просто 1 на сервере, другой на клиенте(устройстве). подробнее

Показать сообщение отдельно
Max_92
 Аватар для Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
15.03.2014, 13:47     Как в одном query обращаться к столбцам, принадлежащим к разным контент-провайдерам?
Нужно в ОДНОМ 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 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru