按照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应用程序的故事编辑器活动。