Facebook SDK 4.0 ShareDialog

时间:2015-04-08 13:31:21

标签: android facebook facebook-graph-api facebook-sdk-4.0 facebook-share

我想使用facebook SDK 4.0从我的Android应用分享图像。我使用ShareDialog,但是当用户没有安装FB应用程序时,根据developers.facebook,SDK应该使用Web Share对话框:

  

在以前版本的Android版SDK中,您的应用必须先检查本机已安装的Facebook应用,然后才能打开“共享”对话框。如果此人没有安装该应用程序,则必须提供自己的代码才能调用回退对话框。

     

现在,SDK会自动检查本机Facebook应用。如果它   没有安装Web共享对话框启动:

但是当我删除FB应用并试图分享时没有任何反应 这是我的代码:

            ShareDialog shareDialog = new ShareDialog(this);

            BitmapFactory.Options bmOptions = new BitmapFactory.Options();

            bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

            Bitmap image = BitmapFactory.decodeFile(imagePath, bmOptions);

            SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

            SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

            shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);

编辑

有没有办法在未安装Facebook应用的情况下在Facebook上分享照片?

4 个答案:

答案 0 :(得分:1)

请仔细阅读SDK文档。 如果没有安装Facebook App,你就无法与sharedialog分享照片。

参考:https://developers.facebook.com/docs/sharing/android

  

照片

     

人们可以使用“共享”对话框或自定义界面将应用中的照片分享到Facebook。

     

照片尺寸必须小于12MB

     

人们需要安装原生Facebook for Android应用程序,版本7.0或更高版本

答案 1 :(得分:1)

我找到了解决方案:

BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

    Bitmap image = BitmapFactory.decodeFile(imagePathForShare, bmOptions);

    SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

    Toast.makeText(getApplicationContext(), getString(R.string.facebook_uploading), Toast.LENGTH_SHORT).show();

    ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result)
        {
            Toast.makeText(getApplicationContext(), getString(R.string.facebookSuccessful), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel()
        {
            Log.v("FACEBOOK_TEST", "share api cancel");
        }

        @Override
        public void onError(FacebookException e)
        {
            Log.v("FACEBOOK_TEST", "share api error " + e);
        }
    });

答案 2 :(得分:0)

试试这个:

我遇到了同样的麻烦,我可以说在Facebook的SharePhotoContent API中存在一些问题。您可以使用ShareLinkContent共享图像。

ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setImageUrl("Your url")
                    .build();
shareDialog.show(linkContent);

答案 3 :(得分:0)

  

您可以使用分享对话框分享照片。

试试这个

 Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                    SharePhoto.Builder photoBuilder = new SharePhoto.Builder();
                    photoBuilder.setBitmap(image);
                    photoBuilder.setCaption("HBD Caption");
                    final SharePhoto sharePhoto = photoBuilder.build();
                    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(sharePhoto).build();
                    mShareDialog.show(content);
  

要添加标题,您需要从Facebook添加发布权限。   如果您不这样做,您的图像将在没有标题的情况下发布。

参考:https://developers.facebook.com/docs/graph-api/reference/user/permissions/