Если вы хотите полный код:
public String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
String name = "?";
ContentResolver contentResolver = getContentResolver();
Cursor contactLookup = contentResolver.query(uri, new String[] {BaseColumns._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null);
try {
if (contactLookup != null && contactLookup.getCount() > 0) {
contactLookup.moveToNext();
name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
//String contactId = contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID));
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
После нескольких часов наталкивания на ту же проблему, я хотел бы поделиться решение, которое сработало для меня на Windows Vista: с помощью python2.6
скопируйте следующий каталог в ваш каталог dist, созданный py2exe:
C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats
Я просто перетащил каталог imageformats прямо в свой каталог dist, без каких-либо дальнейших изменений в qt.conf или чего-либо подобного. Я не пробовал, но это может работать и для фононов.
Должен признаться, мне никогда не удавалось получить правильную комбинацию py2exe + pyqt (и py2exe вообще не помогает с кроссплатформенной упаковкой). PyInstaller кажется намного лучше - документация на http://www.pyinstaller.org/ устарела, но ствол svn намного старше. Некоторые документы представлены на слайдах, представленных на недавней конференции Pycon Italia Tre - http://www.pycon.it/static/stuff/slides/distribuire-programmi-python-con-pyinstaller.pdf - и слайды на английском языке и содержат адрес электронной почты текущего сопровождающего, так что они должны помочь! (И давайте все лоббируем текущего сопровождающего, чтобы он обновил документацию ...! -)
После того, как попробовали все вышеперечисленное решения напрасно, я просто использовал PIL для загрузки своих изображений. Поскольку я хотел преобразовать эти изображения в текстуру в виджете OpenGL Qt, результат был одинаковым при загрузке изображения с помощью Qt или PIL. Тем не менее, я сбит с толку, что такая простая вещь, как загрузка файлов JPEG, настолько сложна в библиотеке графического интерфейса, как хорошо известная и широко используемая как Qt.
У меня была точно такая же проблема. Исправлено с помощью этого: http://mail.python.org/pipermail/python-list/2008-June/669374.html
Попробуйте добавить файл qt.conf в каталог вашего exe, чтобы указать qt, где искать двоичные файлы и плагины.
В простом случае работает что-то вроде следующего. , где вы просто сбрасываете все dll в тот же каталог, что и exe:
[Paths]
Prefix = .
Plugins = .
Обновление: затем скопируйте содержимое ваших плагинов (каталоги imageformat / sqldriver и т. д.) в каталог exe. Я не думаю, что вы можете загружать библиотеки DLL плагинов из того же каталога, что и exe. См. Документ подключаемого модуля Qt для получения подробной информации о подкаталогах подключаемых модулей. (Или оставьте 'plugins =.' И скопируйте каталог плагинов в каталог exe, так что у вас будет /plugins/imageloaders/qjpeg4.dll).
Этьен - Спасибо за подсказку. После долгого чтения и проб и ошибок я пришел к такому же выводу: используйте PIL для отображения jpeg в приложении, созданном с помощью py2app.
Я предполагаю, что предлагаемые решения для py2exe / Windows не обязательно применимо к py2app / OSX.
Я использую OSX Leopard.
Предположим, у вас есть приложение MyApp.app
.
libqjpeg.dylib
и libqgif.dylib
в MyApp.app/Contents / plugins / imageformats /
Поместите это в qt.conf
в MyApp.app/Contents/resources/
:
[Пути]
Префикс =.
Бинарные файлы =.
На моей машине (Leopard) это работает.
в Windows предлагаемые решения работают отлично.
однако в OSX не удается заставить его работать даже с указанными выше инструкциями.
вопрос: libqjpeg.dylib Файлы
и libqgif.dylib
находятся в каталоге / Developer / Applications / Qt / plugins / imageformats /
, и если вы установили сам Qt, а не только PyQt. эти файлы у меня не работают.
В дистрибутиве PyQt я вижу файлы libqjpeg.bundle
и libqgif.bundle
в / opt / local / libexec / qt4 -mac / plugins / imageformats /
, однако это не библиотеки, и, кстати, я тоже не могу открыть их содержимое, даже если они имеют расширение .bundle. использование этих файлов вместо них тоже не работает.
Мне любопытно узнать, что вы сделали, чтобы он работал на osx.
Для меня проблема была решена, просто копирование «QT.conf» для каталога исполняемого файла.
Вы можете найти «QT.conf» в ... \ pythonxx \ lib \ site-packages \ pyqt4 \ qt.conf.
Спасибо за помощь.