在我们的React Native应用程序中,我们正在尝试让我们的用户直接分享特定图像到Feed或故事,具体取决于我们的视图/组件中的选择。
当我们尝试直接使用“com.instagram.share.ADD_TO_FEED”进行共享时,它以完美的方式完美地工作。
但是,当尝试直接使用“com.instagram.share.ADD_TO_STORY”进行共享时,我们会收到以下错误:
找不到处理Intent的活动{act = com.instagram.share.ADD_TO_STORY> typ = image / * flg = 0x10000000 pkg = com.instagram.android(has extras)}
我们只能使用一台设备(特别是使用三星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.");
}
}
}
这可能正在发生,因为行动com.instagram.share.ADD_TO_STORY
的活动在Instagram清单中有android:enabled="false"
。 com.instagram.share.ADD_TO_FEED
行动活动没有这个。
您可以看到,如果您尝试从图库共享图像,则无法与故事共享。
解决方案很简单:您需要在登录后重新启动Instagram。然后它就可以使用了。如果用户实际上不使用Instagram,这可能是Instagram预防措施,以防止在应用选择器中显示多个Instagram操作。
现在这变得非常有趣:
我们的其他测试设备都会弹出该错误
..因为当你在另一台设备上试用它时,你只需安装Instagram,登录你的测试帐户并开始尝试..它永远不会有效,因为你首先需要重启Instagram应用程序! :)