按照these指示,我们能够实现与Instagram Stories的共享,但不能与Facebook Stories的共享。尽管已安装并更新了Facebook应用程序,Android仍无法找到用于意图com.facebook.stories.ADD_TO_STORY的应用程序。有人能做到吗?

最佳答案

可能为时已晚,但我想回答一下是否可以帮助那些在没有Intent Chooser对话框的情况下共享instagram可能遇到问题的人们。



Facebook希望我们启动一个意图选择器对话框,以便从Facebook应用程序本身中的4个-5个活动中进行选择,这些活动可以处理com.facebook.stories.ADD_TO_STORY作为动作。



不过,这是我用来从facebook应用程序启动确切的故事编辑器屏幕的代码。它使用ACTION_SEND而不是com.facebook.stories.ADD_TO_STORY。
因此,首先在清单中的应用程序标记内定义一个文件提供程序

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider_paths" />
        </provider>


然后将file_provider_paths.xml保留在res目录的xml文件夹中。
file_provider_paths.xml

<paths>
    <external-path
        name="share"
        path="/" />
</paths>


然后准备一个您要共享的文件

File file = new File(imagePath);
Uri fileUri = FileProvider.getUriForFile(getApplicationContext(),getPackageName()+".fileprovider",file);


然后将意图发送到instagram如下

Intent storiesIntent = new Intent(Intent.ACTION_SEND);
storiesIntent.setComponent(new ComponentName("com.instagram.android", "com.instagram.share.handleractivity.CustomStoryShareHandlerActivity"));
storiesIntent.setDataAndType(uri, "image/*");//for background image
storiesIntent.putExtra("interactive_asset_uri", uri);//for sticker assets
storiesIntent.putExtra("content_url", "https://dexati.com/");
grantUriPermission("com.instagram.android", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(storiesIntent, 0);


在这里,我们明确调用了Facebook应用程序的故事编辑器活动。

10-07 19:33
查看更多