我使用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应用程序。有没有办法在没有安装本机应用程序的情况下共享位图。
答案 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);
}