在Android上通过数据URL共享图像是否可能?

4
能否通过类似下面这样的代码共享图片?
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)));

我的目标是使我的应用程序不需要权限来写入存储,但仍能够分享它动态创建的图像。有没有什么方法可以做到这一点?


http://www.vogella.com/articles/AndroidIntent/article.html - William Kinaan
@WilliamKinaan 我在你提供的文章中没有看到有关将图像嵌入意图的内容。 - BlueMonkMN
这是该网站的章节:http://www.vogella.com/articles/AndroidIntent/article.html#intent_pickimage - William Kinaan
@WilliamKinaan 看起来这是演示如何从设备中选择照片。我想要发送的图片并没有保存在设备上,而是在屏幕上动态绘制/生成的。 - BlueMonkMN
1个回答

3

是否可以通过类似以下的代码分享图片?

不行,因为ACTION_SEND不使用Uri,而是使用EXTRA_TEXTEXTRA_STREAM

我的目标是使我的应用程序不需要写入存储的权限,但仍能够共享动态创建的图像。有什么办法可以做到这一点吗?

创建一个ContentProvider来提供文件服务,然后将指向您的文件的Uri放在您的提供程序中的EXTRA_STREAM中。您可以尝试使用自定义权限保护提供程序,并通过FLAG_GRANT_READ_URI_PERMISSION允许发送活动对其进行临时访问,尽管我只在使用实际Uri(例如setData())的Intent结构而非通过像EXTRA_STREAM这样的额外内容尝试过该方法。

这个示例项目使用ACTION_VIEW演示了这种技术(注意:需要安装有PDF查看器的设备才能真正工作)。


这个很好用!我只需将Uri放在putExtra的第二个参数中,它就可以通过与ContentProvider链接的Uri获取图像!它一定使用了接受字符串作为第二个参数的重载函数。您建议我在此主题的任何地方发布有关我的特定解决方案及其工作原理的进一步详细信息吗?我认为这是一个相当酷的解决方案,但我不确定其他人可能想在这里看到什么细节。当然,您提供的代码回答了我很多问题,但我还必须足够聪明地查看清单文件。 - BlueMonkMN
@BlueMonkMN:请分享一些关于你是如何做到的信息。我也在尝试做同样的事情。 - marbdq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接