我们的 React Native 应用中,我们正在尝试让用户根据视图/组件内选择的内容直接分享特定的图片到动态或者故事。
当我们使用 "com.instagram.share.ADD_TO_FEED" 进行分享时,它可以在一致的方式下完美地工作。
然而,当我们尝试直接使用 "com.instagram.share.ADD_TO_STORY" 进行分享时,我们会遇到以下错误:
"No Activity found to handle Intent { act=com.instagram.share.ADD_TO_STORY > typ=image/* flg=0x10000000 pkg=com.instagram.android (has extras) }"
我们只在一个设备上(具体来说是三星 Note 8)让它工作了,但是我们的其他测试设备都会弹出该错误。
以下是我们的代码:
当我们使用 "com.instagram.share.ADD_TO_FEED" 进行分享时,它可以在一致的方式下完美地工作。
然而,当我们尝试直接使用 "com.instagram.share.ADD_TO_STORY" 进行分享时,我们会遇到以下错误:
"No Activity found to handle 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.");
}
}
}