是否可以使用类似的代码共享图像?
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 :(得分:3)
是否可以使用类似的代码共享图像?
不,因为ACTION_SEND
不使用Uri
。它使用EXTRA_TEXT
或EXTRA_STREAM
。
我的目标是让我的应用不需要写入存储的权限,但能够共享它动态创建的图像。有没有办法做到这一点?
创建一个ContentProvider
来提供该文件,然后将Uri
指向您EXTRA_STREAM
中提供商的文件。您可能能够使用自定义权限保护提供商,并允许发送活动通过FLAG_GRANT_READ_URI_PERMISSION
临时访问该提供商,但我只尝试使用Intent
结构实际的Uri
(例如setData()
)而不是像EXTRA_STREAM
这样的额外内容。
This sample project使用ACTION_VIEW
演示此技术(注意:需要安装了PDF查看器的设备才能真正发挥作用)。