Raf*_*rez 6 android facebook instagram react-native
在我们的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(有其他功能)}
我们已经使它只能在一个设备上使用(特别是使用Samsung 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.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
该AndroidManifest.xml文件可能缺少一个重要元素:<queries/>。
正如文档所说
指定应用程序打算与之交互的其他应用程序集。这些其他应用程序可以通过包名称、意图签名或提供商权限来指定
就我而言,在清单文件中添加以下行(在manifest标签内,而不是在application)后,一切都开始工作。
<queries>
<intent>
<action android:name='com.instagram.share.ADD_TO_STORY' />
<data android:mimeType='image/*' />
</intent>
</queries>
Run Code Online (Sandbox Code Playgroud)
发生这种情况可能是因为带有该动作的活动com.instagram.share.ADD_TO_STORY已android:enabled="false"在 Instagram 中体现出来。动作com.instagram.share.ADD_TO_FEED活动没有这个。
您可以看到,如果您尝试共享图库中的图像,则共享到故事也不可用。
解决方案很简单:登录后需要重新启动 Instagram。然后它将变得可用。如果用户实际上不使用 Instagram,这可能是 Instagram 的一项预防措施,防止在应用选择器中显示多个 Instagram 操作。
现在这变得很有趣:
我们的其他测试设备都会弹出该错误
..发生这种情况是因为当您在另一台设备上尝试时,您只需安装 Instagram,登录您的测试帐户并开始尝试..它永远不会起作用,因为您首先需要重新启动 Instagram 应用程序!:)
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |