问题:我正在尝试从托管在其他地方的 Android 应用程序向 Facebook 分享内容,并将其深层链接回我的应用程序。
我正在开发和 Android 应用程序的详细信息 ,我面临的问题是我有一个视频,我想分享给用户的新闻源,并带有一个返回应用程序的深层链接。该视频托管在 Cloudinary 上,但这无关紧要,尝试将 Youtube 视频发布到用户新闻源,但当他们单击下面的描述时将其深层链接回应用程序将是同样的问题。
我已经非常接近使用 FacebookShareLinkContent
和ShareDialog
. 代码如下所示:
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse("https://kt4rh.app.goo.gl/naxy")) /* Deeplink back into my app created using Firebase Dynamic Link */
.setImageUrl(Uri.parse({path to an image stored on clodinary}))
.build();
ShareDialog shareDialog = new ShareDialog(getActivity());
shareDialog.show(content);
这显示了一个图像,当用户点击它时,它带有一个返回到我的应用程序的深层链接。但是,我想要做的是显示视频(或 gif,两者都可以)而不是图像。
我已经尝试将视频下载到设备并使用 a ShareVideoContent
,希望我可以像这样设置localUrl
和contentUrl
(类似于我在ShareLinkContent
上面设置缩略图和 contentUrl 的方式):
Uri videoUri = Uri.fromFile(new File(localPathToVideo));
ShareVideo shareVideo = new ShareVideo.Builder()
.setLocalUrl(videoUri)
.build();
ShareVideoContent videoContent = new ShareVideoContent.Builder()
.setVideo(shareVideo)
.setContentUrl(Uri.parse("https://kt4rh.app.goo.gl/naxy")) /* Deeplink back to app */
.build();
ShareDialog shareDialog = new ShareDialog(getActivity());
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {}
@Override
public void onCancel() {}
@Override
public void onError(FacebookException error) {
Log.e(LOG_TAG, error.getMessage());
}
});
if (shareDialog.canShow(videoContent)) {
shareDialog.show(videoContent);
}
但我只是收到一条错误消息,说“只应指定链接、照片和视频中的一个。”,这意味着我无法设置本地 url 和内容 url。
所以现在我被困住了。似乎这应该是一个相对常见的问题(共享托管在其他地方的内容并将其深层链接回您的应用程序),但我不知道该怎么做。