是否可以通过数据网址在Android上分享图片?

时间:2013-04-06 13:43:05

标签: java android android-intent graphics

是否可以使用类似的代码共享图像?

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)));

我的目标是让我的应用不需要写入存储的权限,但能够共享它动态创建的图像。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

  

是否可以使用类似的代码共享图像?

不,因为ACTION_SEND不使用Uri。它使用EXTRA_TEXTEXTRA_STREAM

  

我的目标是让我的应用不需要写入存储的权限,但能够共享它动态创建的图像。有没有办法做到这一点?

创建一个ContentProvider来提供该文件,然后将Uri指向您EXTRA_STREAM中提供商的文件。您可能能够使用自定义权限保护提供商,并允许发送活动通过FLAG_GRANT_READ_URI_PERMISSION临时访问该提供商,但我只尝试使用Intent结构实际的Uri(例如setData())而不是像EXTRA_STREAM这样的额外内容。

This sample project使用ACTION_VIEW演示此技术(注意:需要安装了PDF查看器的设备才能真正发挥作用)。