找不到可处理的活动来处理意图com.instagram.share.ADD_TO_STORY。

11
我们的 React Native 应用中,我们正在尝试让用户根据视图/组件内选择的内容直接分享特定的图片到动态或者故事。
当我们使用 "com.instagram.share.ADD_TO_FEED" 进行分享时,它可以在一致的方式下完美地工作。
然而,当我们尝试直接使用 "com.instagram.share.ADD_TO_STORY" 进行分享时,我们会遇到以下错误:
"No Activity found to handle Intent { act=com.instagram.share.ADD_TO_STORY > typ=image/* flg=0x10000000 pkg=com.instagram.android (has extras) }"
我们只在一个设备上(具体来说是三星 Note 8)让它工作了,但是我们的其他测试设备都会弹出该错误。
以下是我们的代码:
@ReactMethod
public void shareWithInstagram(String fileName, String base64str, String mode, Callback callback,
        Callback secondCallback) {

    this.callback = callback;

    String type = "image/*";

    File media = saveImage(getReactApplicationContext(), fileName, base64str);

    if (isAppInstalled("com.instagram.android") == false) {
        callback.invoke("Sorry, instagram is not installed in your device.");
    } else {
        if (media.exists()) {
            Intent share = new Intent("com.instagram.share." + mode);
            share.setType(type);
            share.setPackage("com.instagram.android");
            StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
            StrictMode.setVmPolicy(builder.build());
            Uri uri = Uri.fromFile(media);

            share.setDataAndType(uri, type);
            share.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            share.putExtra(Intent.EXTRA_STREAM, uri);
            Activity currentActivity = getCurrentActivity();

            if (currentActivity.getPackageManager().resolveActivity(share, 0) != null) {

                currentActivity.startActivityForResult(share, INSTAGRAM_SHARE_REQUEST);
            } else {
                callback.invoke("Sorry, an error ocurred.");
            }
        } else {
            callback.invoke("Sorry, image could not be loaded from disk.");
        }
    }

}

https://developers.facebook.com/docs/instagram/sharing-to-stories/ - AskNilesh
我们已经在做了... - Rafa Ramírez
1
嗨,对我们来说问题出在“类型”上,它需要是“video/mp4”,可能“image/*”不被允许。 - tobidude
@tobidude,你的建议对我有效。我认为你需要将评论转换为答案。 - Olkunmustafa
完成了!很高兴能得到一个好评。 - tobidude
3个回答

5

AndroidManifest.xml文件可能缺少一个重要元素:<queries/>

根据文档所述,

指定应用程序打算与之交互的其他应用程序集。可以按软件包名称、按意图签名或按提供者权限指定这些其他应用程序集

在我的情况下,将以下行添加到清单文件中(在manifest标记内,而不是application标记内),一切都开始正常工作了。

<queries>
    <intent>
        <action android:name='com.instagram.share.ADD_TO_STORY' />
        <data android:mimeType='image/*' />
    </intent>
</queries>

4
这可能是因为Instagram清单文件中的`com.instagram.share.ADD_TO_STORY`操作活动的`android:enabled="false"`。而`com.instagram.share.ADD_TO_FEED`操作活动则没有此设置。
如果您尝试从图库共享图像,则会发现无法分享到故事中。
解决方法很简单:在登录后需要重新启动Instagram,然后它就变得可用了。这可能是因为Instagram预防用户实际上不使用Instagram却在应用选择器中显示多个Instagram操作。
现在变得相当有趣:
“我们的其他测试设备都出现了这个错误”
.. 因为当您在另一个设备上尝试时,您只需安装Instagram,登录到测试帐户并开始尝试即可...但它永远不起作用,因为您首先需要重新启动Instagram应用程序! :)

3
这不是解决方案。我们不能期望用户重新启动手机以便使用我们的应用程序.. :( 很遗憾 com.instagram.share.ADD_TO_STORYFacebook 的官方文档中,但无法使用 -.- - zeroDivider
1
用户已经登录了Instagram应用程序。问题只会在您第一次安装Instagram并首次登录时发生,直到您重新启动应用程序(或它自然终止,因为一段时间没有使用它,或用户重新启动手机)。这里需要注意的重要事项是,在实际条件下,这不会发生在用户身上 - David Riha
4
我遇到了完全相同的问题。我尝试重新启动Instagram/设备,但仍然无法工作。有什么想法吗?我是在真实设备上测试,而不是模拟器。 - eugeniobac

1
对我们来说,问题出在“类型”上,似乎不允许使用“image/*”。使用“video/mp4”就可以了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接