Я реализую свой собственный SearchRecentSuggestionsProvider
, и все работает, кроме одного: я не могу заставить поиск устройств отображать значки для результатов. Я хочу отображать изображения из папки данных моего приложения (расположенной по адресу /{sdcard}/Android/data/package_name/files/
)
Согласно документации, это достижимо с помощью SearchManager.SUGGEST_COLUMN_ICON_1
, и это по-видимому, поддерживает ряд схем, в том числе ContentResolver.SCHEME_FILE
, то есть file
. Вот цитата из официальных документов:
Имя столбца для курсора предложений. Необязательно. Если ваш курсор включает этот столбец, все предложения будут предоставлены в формате, который включает место для двух маленьких значков, одного слева и одного справа от каждого предложения. Данные в столбце должны быть идентификатором ресурса drawable или URI в одном из следующих форматов:
содержание (
SCHEME_CONTENT
)android.resource (
SCHEME_ANDROID_RESOURCE
)файл (
SCHEME_FILE
)
Я пробовал ряд очевидных вещей, включая ручное создание файла URI и автоматическое создание с использованием Uri.Builder()
. Ничего из этого не сработало.
Я также обнаружил, что кто-то еще спрашивает о том же в группах Google, и, к сожалению, на него нет ответа: https://groups.google.com/forum/#!topic/android-developers/MJj7GIaONjc
У кого-нибудь есть опыт заставить поиск устройства отображать локальные изображения с устройства?
ОБНОВЛЕНИЕ (15 декабря): я только что попробовал использовать ContentProvider
с SearchView
в качестве информации для поиска, и это работает точно так, как ожидалось, включая изображения обложки. Но глобальный поиск его не показывает...
ContentProvider
для отображения изображений в папкеdata
вашего приложения. Вы пробовали это? Может стоит попробовать, тем более, что это не слишком сложно. В качестве альтернативы вы пытались загрузить изображение по схемеfile://
из более общедоступного места? Например корень сд карты? - person MH.   schedule 15.11.2013file://
иfile:/
для общедоступного файла (папки со скриншотами), и это все равно не сработало. Возможно, придется создатьContentProvider
, чтобы он работал - просто странно, когда в документации говорится, что он должен работать. - person Michell Bak   schedule 15.11.2013"'" + uri + "' AS " + SearchManager.SUGGEST_COLUMN_ICON_1
гдеuri = Uri.fromFile(new File("/path/to/file"))
. Обратите внимание, чтоuri
необходимо заключать в одинарные кавычки. - person Vikram   schedule 16.11.2013