Я пытаюсь открыть файл .png, расположенный в каталоге / data моего приложения, через ContentProvider, но вместо достижения openFile
вызывается метод query
. Теперь у меня есть только одно изображение, которое мне нужно предоставить для совместного использования в других приложениях. Как настроить намерение на openFile
вместо query
?
Intent shareImageIntent = new Intent(Intent.ACTION_SEND);
shareImageIntent.setType("image/*");
shareImageIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(shareImageIntent, "Share image"));
Где выглядит Ури
content://my.package.contentprovider/fileName
Или, альтернативно, мне нужно создать базу данных для этого и вернуть курсор?
UPDATE
Так что, похоже, это работает для всего, кроме приложения SMS (именно это я и решил сначала протестировать), однако я хотел бы поделиться им с ним.
Вот соответствующая трассировка стека:
Вызывается: java.lang.IllegalArgumentException: Запрос на
content: //mypackage.myprovider/someImage.png возвращает нулевой результат. в
com.android.mms.ui.UriImage.initFromContentUri (UriImage.java:104) в
com.android.mms.ui.UriImage. (UriImage.java:63) в
com.android.mms.model.ImageModel.initModelFromUri (ImageModel.java:83)
на com.android.mms.model.ImageModel. (ImageModel.java:65) на
com.android.mms.data.WorkingMessage.changeMedia (WorkingMessage.java:481)
в
com.android.mms.data.WorkingMessage.setAttachment (WorkingMessage.java:375)
...
Таким образом, приложение SMS выполняет запрос вместо чтения непосредственно из openFile
, что, похоже, делает любое другое приложение на моем телефоне (включая другие приложения Google)
Кто-нибудь знает, что мне нужно вернуть, чтобы выполнить запрос соответствующим образом? Я сейчас пойду копать AOSP.