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



在我们的 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 (有额外内容( }

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

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

正如文档所说

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

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

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

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

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

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


现在这变得很有趣:

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

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

对我们来说,它是"类型",似乎不允许使用"image/*"。

使用"视频/mp4"有效!

相关内容

最新更新