2013-04-06 3 views
4

Можно ли поделиться изображением с кодом что-то вроде этого?Можно ли использовать изображение на Android через URL-адрес данных?

Intent share = new Intent(Intent.ACTION_SEND); 
share.setData(Uri.parse("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACx" 
    + "jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGoSURBVDhPlVM9SEJRGD2DkL+QmoiKYNggToJL" 
    + "4KKLNDiKW4NCoENQkzS1uboILoKjW61NSZOjo1uOBlHPgjJsuN3jvc+naVQHPt79vu+cc9/37n34" 
    + "BQkd/0Jibw+3Ozt4j0TwwuCaNfYU5Qe43Tg5OMDD9TWEYUAIoYJr1mIxPEmjc01fh8uF03wer6vC" 
    + "7zGbQZRKmPp8uNCyJWKhEAwSTDJ3NNc07fUsE76J1FjjcL5VQb0O4XBAVCoqj0ZV3u2qvN+H8Psx" 
    + "1HLAZsPn6u6pFIQsi3AYYjKBcDpVXiyqPrl2O2ayZqc+FY9jaooZuZwSJBJL8iKv1SwONdTSIJtO" 
    + "w1g1GA4h9vfVk3mjod5mPLY4ySQMqT2kgZ0jsMjZBgOL9D1omM2qtfwmH1K7SwN4vbhnkzuQ0G5v" 
    + "imnOHjkMjwePC7HGUSajxuDM1aqa/+wM4vJSCRnmHSkU8CwNjrVWIRDAVauFubnjaATRbCoD7m7W" 
    + "Ox3Mg0HcaNkaduV9GPCmbbuNrLEnxXeSuzi+reD/wJ+Hx1Qu443BNWvsadqfwDOu6lic9yaAL2uK" 
    + "Y4RMd4E2AAAAAElFTkSuQmCC")); 
startActivity(Intent.createChooser(share, getString(R.id.menu_share))); 

Моя цель состоит в том, чтобы сделать мое приложение не требует разрешения на запись в хранилище, но чтобы иметь возможность обмениваться изображениями, которые он динамически создает. Есть какой-либо способ сделать это?

+0

http://www.vogella.com/articles/AndroidIntent/article.html –

+0

@WilliamKinaan Я ничего не вижу о встраивании изображений в намерениях в связанной статье. – BlueMonkMN

+0

это раздел http://www.vogella.com/articles/AndroidIntent/article.html#intent_pickimage –

ответ

3

Можно ли поделиться изображением с кодом примерно так?

Нет, поскольку ACTION_SEND не использует Uri. Он использует EXTRA_TEXT или EXTRA_STREAM.

Моя цель состоит в том, чтобы мое приложение не требовало разрешения на запись на хранение, но чтобы иметь возможность совместно использовать изображения, которые оно динамически создает. Есть какой-либо способ сделать это?

Создать ContentProvider служить файл, а затем положить Uri указывающим на файл в поставщике в EXTRA_STREAM. You может быть в состоянии защитить поставщика с помощью специального разрешения и разрешить временный доступ к нему для отправки через FLAG_GRANT_READ_URI_PERMISSION, хотя я только пробовал это с Intent структурами, которые используют фактический Uri (например, setData()) вместо дополнительного EXTRA_STREAM.

This sample project демонстрирует эту технику, используя ACTION_VIEW (примечание: требуется устройство с программой просмотра PDF, установленным для действительно работы).

+0

Это отлично работает! Я просто поставил Uri во втором параметре putExtra, и он выяснил, как получить изображение через связанный с ContentProvider Uri! Он должен был использовать перегрузку, которая принимает строку в качестве второго параметра. Вы рекомендуете опубликовать какие-либо подробности о моем конкретном решении и о том, как он работал в этом разделе? Я думаю, что это довольно крутое решение, но я не уверен, какие подробности другие могут захотеть увидеть здесь. Конечно, код, на который вы ссылались, отвечал на многие мои вопросы, но я должен был быть достаточно умным, чтобы тоже смотреть на файл манифеста. – BlueMonkMN

+0

@BlueMonkMN: Пожалуйста, поделитесь информацией о том, как вы это сделали. Я пытаюсь сделать то же самое. – marbdq

Смежные вопросы