是否有可能通过数据URL分享Android上的图像? [英] Is it possible to share an image on Android via a data URL?

查看:206
本文介绍了是否有可能通过数据URL分享Android上的图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有可能与code这样的事?

分享图片

 意图份额=新意图(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 +红/ WJ + Hx1Qu443BNWvsadqfwDOu6lic9yaAL2uK
    +Y4RMd4E2AAAAAElFTkSuQmCC));
startActivity(Intent.createChooser(份额,的getString(R.id.menu_share)));

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


解决方案

  

是否有可能与code这样的事?

分享图片

没有,因为 ACTION_SEND 不使用乌里。它采用 EXTRA_TEXT EXTRA_STREAM


  

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


创建一个的ContentProvider 来提供服务的文件,然后把乌里指向您的文件你的供应商在 EXTRA_STREAM 。您的可能的能够保护具有自定义权限的供应商,并允许它的发送活动临时访问通过 FLAG_GRANT_READ_URI_PERMISSION ,虽然我只试过与使用意图结构的实际乌里(例如,使用setData()),而不是通过像 EXTRA_STREAM 额外的。

使用此演示了这一技术示例项目 ACTION_VIEW (注意:需要安装一个PDF浏览器的设备,真正工作)。

Is it possible to share an image with code something like this?

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

My goal is to make my app not require permissions to write to storage, but to be able to share images that it dynamically creates. Is there any way to do this?

解决方案

Is it possible to share an image with code something like this?

No, because ACTION_SEND does not use the Uri. It uses EXTRA_TEXT or EXTRA_STREAM.

My goal is to make my app not require permissions to write to storage, but to be able to share images that it dynamically creates. Is there any way to do this?

Create a ContentProvider to serve the file, then put the Uri pointing to your file within your provider in EXTRA_STREAM. You may be able to protect the provider with a custom permission and allow the sending activity temporary access to it via FLAG_GRANT_READ_URI_PERMISSION, though I have only tried that with Intent structures that use the actual Uri (e.g., setData()) instead of via an extra like EXTRA_STREAM.

This sample project demonstrates this technique using ACTION_VIEW (note: requires a device with a PDF viewer installed to truly work).

这篇关于是否有可能通过数据URL分享Android上的图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆