未找到处理 Intent com.instagram.share.ADD_TO_STORY 的活动

Posted

技术标签:

【中文标题】未找到处理 Intent com.instagram.share.ADD_TO_STORY 的活动【英文标题】:No Activity found to handle 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.");
        
    


【问题讨论】:

developers.facebook.com/docs/instagram/sharing-to-stories 我们已经在这样做了... 您好,对我们来说是“类型”,必须是“video/mp4”,可能是“image/*”是不允许的。 @tobidude 你的建议对我有用。我认为您需要从评论转换为答案。 成功了!很高兴升级。 【参考方案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>

【讨论】:

以上是关于未找到处理 Intent com.instagram.share.ADD_TO_STORY 的活动的主要内容,如果未能解决你的问题,请参考以下文章

尝试打开 word 文件或 excel 文件时未找到处理 Intent 的活动

ActivityNotFoundException:未找到处理 Intent 可疑行为的活动

尝试以编程方式请求权限时未找到处理 Intent 的 Activity

未找到处理 Intent 的活动 act=android.intent.action.VIEW dat=google.navigation:q=17.399986,78.483137 pkg=com

未找到Android活动异常:找不到处理Intent的活动

未找到处理 Intent act=android.media.action.IMAGE_CAPTURE 的 Activity