2015-04-03 39 views
2

我正在使用Facebook 4.0通過我的應用程序分享照片,但我無法通過手機分享照片。我可以通過提供網址分享來自互聯網的圖像,但它不適用於手機中的圖像。我用於分享的代碼如下。在Facebook上使用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應用程序被安裝在手機上。有沒有安裝本地應用程序而共享位圖的方法。

回答

3

如果未安裝本機應用程序,共享位圖的唯一方法是獲得用戶的publish_actions許可,並對我/照片執行POST(您可以使用ShareApi類來爲你,但你仍然需要徵求用戶的許可)。不幸的是,基於Web的對話框不支持上傳二進制數據。

+0

這是不幸的 – user2687482 2015-04-07 18:25:14

+0

我不得不在Facebook上分享多張圖片,如果安裝的應用程序它工作正常,但如果沒有,那麼安裝的應用程序sharedialog沒有上傳位圖,同樣喜歡上面的場景,但我通過權限也不過在此之後它不起作用 – 2015-10-15 22:30:13

+0

你有什麼權限並不重要,網絡共享對話框不支持照片上傳。你必須通過API來完成。 – 2015-10-16 15:17:59

0

與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); 
} 
相關問題