未找到处理 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_STORY
在Facebook
的官方文档中,但无法正常工作-.-
用户已登录 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
未找到处理 Intent act=android.media.action.IMAGE_CAPTURE 的 Activity