【问题标题】:No Activity found to handle Intent com.instagram.share.ADD_TO_STORY未找到处理 Intent com.instagram.share.ADD_TO_STORY 的活动
【发布时间】:2018-10-09 08:44:12
【问题描述】:

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

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

但是,当尝试直接使用“com.instagram.share.ADD_TO_STORY”进行分享时,我们会收到以下错误:

未找到处理 Intent 的 Activity { act=com.instagram.share.ADD_TO_STORY > typ=image/* flg=0x10000000 pkg=com.instagram.android(有附加功能)}

我们让它只能在一台设备上工作(特别是使用三星 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.");
        }
    }

}

【问题讨论】:

  • 我们已经在这样做了...
  • 您好,对我们来说是“类型”,必须是“video/mp4”,可能是“image/*”是不允许的。
  • @tobidude 你的建议对我有用。我认为您需要从评论转换为答案。
  • 成功了!很高兴升级。

标签: android facebook react-native instagram


【解决方案1】:

这可能是因为带有com.instagram.share.ADD_TO_STORY 操作的活动在 Instagram 清单中有android:enabled="false"com.instagram.share.ADD_TO_FEED 动作活动没有这个。

如果您尝试分享图库中的图片,您会看到分享到 Story 也是不可用的。

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


现在这变得很有趣:

我们的其他测试设备都有这个错误弹出

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

【讨论】:

  • 这不是解决方案。我们不能指望用户重新启动手机以便他们可以使用我们的应用程序.. :( com.instagram.share.ADD_TO_STORYFacebook 的官方文档中,但无法正常工作-.-
  • 用户已登录 Instagram 应用。仅当您首次安装 Instagram 并首次登录时才会出现此问题,直到您重新启动应用程序(或者由于一段时间不使用它而自然终止,或者用户重新启动手机)。这里需要注意的是,这不会发生在现实条件下的用户身上
  • 我面临着完全相同的问题。我尝试重新启动 Instagram/设备,但它仍然无法正常工作。任何想法?我正在真实设备中进行测试。不在模拟器中。
【解决方案2】:

对我们来说这是“类型”,似乎“图像/*”是不允许的。

使用“video/mp4”有效!

【讨论】:

    【解决方案3】:

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

    正如docs 所说的

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

    在我的例子中,在清单文件中添加以下行(在 manifest 标记内,而不是在 application 中)之后,一切都开始工作了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2022-11-29
      相关资源
      最近更新 更多