隐含意图:将图像从画廊分享到我的应用程序

Posted

技术标签:

【中文标题】隐含意图:将图像从画廊分享到我的应用程序【英文标题】:implicit intent: shating images from gallery to my app 【发布时间】:2016-02-17 08:29:41 【问题描述】:

我正在尝试让图库应用将图像共享到我的应用,问题是我不知道如何获取图库发送给我的图像数据。我假设我可能在 .getData() 方法中找到了数据,但它返回 null

这是我的意图过滤器

<intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <action android:name="android.intent.action.VIEW"/>
            <data android:mimeType="image/*"/>
            <category android:name="android.intent.category.default"/>
        </intent-filter>

这是我在 MainActivity 中的代码

Intent data = getIntent(); //get the intent that starts this activity, in this case: gallery intent
    if(data != null) 
        Uri uri = data.getData();
        //set the image view: the problem is: uri is always null
        imageView.setImageURI(uri);
    

如果 getData() 方法不是我想要的,那么我该如何获取要与我的应用共享的图像?

【问题讨论】:

您在使用 startActivityForResult 和 onActivityResult 吗?如果可能,请发布您已完成的整个活动代码 @user1140237 不,我不知道,不只是为了 startActivityForResult() 吗?我没有使用我的应用从图库中挑选图片,我只想用我的应用制作图库share图片 尝试使用“内容”或“文件”mimetype。不知道是否可以这样做,但在我的设备上,默认图库应用程序返回“内容”uri 以选择图像意图,文件管理器应用程序返回相同图像的“文件”uri。也许这个动作有点类似于你想要的。还尝试设想 Intent 附加功能。也许图像数据捆绑在其中。 【参考方案1】:

所以,我觉得我的回答有点晚了,但无论如何,这里是:

您已经在 AndroidManifest.xml 中正确设置了意图过滤器,如下所示:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

如this Website 所述,您可以使用以下命令获取 URI:

Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);

//set content of ImageView to the specific Uri
imageView.setImageURI(imageUri);

关于 Intent 类的文档可以在here找到。

【讨论】:

以上是关于隐含意图:将图像从画廊分享到我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

来自画廊/相机意图的图片方向[重复]

使用cordova将图片从android画廊分享到cordova应用程序

从画廊android中的图像扫描条形码

如何从图库和相机中裁剪图像

仅带有图像选项的相机意图

通过分享意图分享图像到 Whatsapp