找不到用于处理Intent的活动com.instagram.share.ADD_TO_STORY

Raf*_*rez 6 android facebook instagram react-native

在我们的React Native应用中,我们试图让我们的用户根据视图/组件中的选择直接将特定的图像共享到提要或故事中。

当我们尝试直接使用“ com.instagram.share.ADD_TO_FEED”进行共享时,它会以一致的方式完美运行。

但是,当尝试直接使用“ com.instagram.share.ADD_TO_STORY”进行共享时,会出现以下错误:

找不到可处理意图的活动{act = com.instagram.share.ADD_TO_STORY> typ = image / * flg = 0x10000000 pkg = com.instagram.android(有其他功能)}

我们已经使它只能在一个设备上使用(特别是使用Samsung 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.");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Ser*_*aró 5

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

正如文档所说

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

就我而言,在清单文件中添加以下行(在manifest标签内,而不是在application)后,一切都开始工作。

<queries>
    <intent>
        <action android:name='com.instagram.share.ADD_TO_STORY' />
        <data android:mimeType='image/*' />
    </intent>
</queries>
Run Code Online (Sandbox Code Playgroud)


Dav*_*iha 4

发生这种情况可能是因为带有该动作的活动com.instagram.share.ADD_TO_STORYandroid:enabled="false"在 Instagram 中体现出来。动作com.instagram.share.ADD_TO_FEED活动没有这个。

您可以看到,如果您尝试共享图库中的图像,则共享到故事也不可用。

解决方案很简单:登录后需要重新启动 Instagram。然后它将变得可用。如果用户实际上不使用 Instagram,这可能是 Instagram 的一项预防措施,防止在应用选择器中显示多个 Instagram 操作。


现在这变得很有趣:

我们的其他测试设备都会弹出该错误

..发生这种情况是因为当您在另一台设备上尝试时,您只需安装 Instagram,登录您的测试帐户并开始尝试..它永远不会起作用,因为您首先需要重新启动 Instagram 应用程序!:)

  • 我面临着完全相同的问题。我尝试重新启动 Instagram/设备,但仍然无法正常工作。任何想法?我正在真实设备中进行测试。不在模拟器中。 (4认同)
  • 这不是解决办法。我们不能指望用户重新启动手机以便他们可以使用我们的应用程序..:( 遗憾的是 `com.instagram.share.ADD_TO_STORY` 在 `Facebook` 的官方文档中,但不起作用 -.- (3认同)