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

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

4

1 回答 1

3

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

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

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

创建一个ContentProvider来提供文件,然后将Uri指向您的文件的指向您的提供程序中的EXTRA_STREAM. 您可以使用自定义权限来保护提供者,并允许发送活动通过 临时访问它FLAG_GRANT_READ_URI_PERMISSION,尽管我只尝试过Intent使用实际Uri(例如setData())而不是通过额外的类似的结构EXTRA_STREAM

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

于 2013-04-06T13:49:48.230 回答