Android:是否可以将图片共享到存储在Google Cloud Storage中的Instagram?

时间:2018-11-28 22:53:35

标签: android google-cloud-storage instagram share firebase-storage

我有一个存储在Google Cloud Storage中的图像。我想允许我的应用程序的用户将其分享到Instagram。因此,我在存储中获得了对它的引用,然后获得了下载URL(一个URI对象),并将其放入我用来打开Instagram的意图的额外数据中。

但是Instagram表示“无法加载图像”。我认为这是因为URI指向Cloud Storage返回的Web URL,而不是指向本地文件的URI。没有? 是否有任何方法可以使用指向Cloud Storage返回的Web URL的URI来使我的程序正常工作?

来源

下面提供了代码:

final Intent intent_share = new Intent(Intent.ACTION_SEND);
intent_share.setType("image/*");

FirebaseStorage firebase_storage = new SetupFirebaseStorage().getFirebaseStorage();
StorageReference storage_reference = firebase_storage.getReference();
storage_reference.child(image_uuid).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        intent_share.putExtra(Intent.EXTRA_STREAM, uri);
        activity.startActivity(Intent.createChooser(intent_share, "Share to"));
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        Toast.makeText(getContext(), "An error occurred during the publication image's URL retrieving.", Toast.LENGTH_LONG).show();
    }
});

1 个答案:

答案 0 :(得分:2)

official Instagram's documentation for Android developers中所述,Intent必须具有指向设备中媒体路径的URI。

enter image description here

但是,就像您说的那样,您要在Intent中放入下载URL(请检查方法getDownloadUrl的文档),而不是指向本地设备中图像的URI。实际上,该图像甚至不在您的手机中。您需要执行的操作是下载具有该URL的图像,然后将媒体的URI放入意图中。