使用Facebook 4.0在Facebook上分享照片,无需安装本机应用程序

时间:2015-04-03 21:24:16

标签: android facebook image sharing

我使用Facebook 4.0通过我的应用分享照片,但我无法通过手机分享照片。我可以通过提供网址来分享互联网上的图像,但它不适用于手机中的图像。我用于共享的代码如下。

public void sharePhoto(Uri contentUri, String contentTitle, Bitmap image, String contentDescription){
    ShareDialog facebookDialog = new ShareDialog(getActivity());

    ShareLinkContent.Builder content = new ShareLinkContent.Builder();
    content.setContentUrl(contentUri);
    content.setContentTitle(contentTitle);
    content.setImageUrl(getImageUri(getActivity(), image));
    content.setContentDescription(contentDescription);

    ShareLinkContent shareContent = content.build();

    facebookDialog.show(shareContent);

}

public Uri getImageUri(Context inContext, Bitmap inImage) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);
}

我知道我可以使用以下

从手机分享位图
public void shareImage(Bitmap image){
    ShareDialog facebookDialog = new ShareDialog(getActivity());
    SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();
    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
    facebookDialog.show(content);

}

但是,此代码要求在手机上安装原生facebook应用程序。有没有办法在没有安装本机应用程序的情况下共享位图。

2 个答案:

答案 0 :(得分:3)

如果未安装本机应用程序,则共享位图的唯一方法是获得用户的publish_actions权限,并对我/照片执行POST(您可以使用ShareApi类来执行你的实际帖子,但你仍然需要征得用户的许可)。遗憾的是,基于Web的对话框不支持上传二进制数据。

答案 1 :(得分:-1)

使用fb sdk共享多个图像且未安装本机facebook。首先登录,然后使用下面的功能。

private void postPhoto() {

ArrayList<SharePhoto> photos = new ArrayList<>();

    SharePhoto sharePhoto1 = new SharePhoto.Builder().setBitmap(image1).build();

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

    photos.add(sharePhoto);
    photos.add(sharePhoto1);

    SharePhotoContent sharePhotoContent =
            new SharePhotoContent.Builder().setPhotos(photos).build();
    ShareApi.share(sharePhotoContent, shareCallback);
}