2012-12-06 77 views
1

可能重複發佈的SD卡圖像到Facebook塗鴉牆:
How to post image to facebook wall using graph api如何使用圖形API

我使用圖形API發佈在Facebook上牆。

strpostimageurl=/mnt/sdcard/DCIM/mnt/sdcard/DCIM/Camera1354795516555.jpg 

String res = UrltoValue.getValuefromUrl("https://graph.facebook.com/"+Login.facebookid+"/feed?access_token="+accesstoken+"&method="+"post"+"&message="+"hi"+"&link="+strpostimageurl); 

我得到壞請求作爲迴應。

是否可以給SD卡路徑張貼圖像?我只有該對象的位圖,所以我使用該位圖創建了文件,並且正在使用該文件。

我需要在多個朋友牆上發帖,所以我更喜歡使用Graph API。

回答

0

您正在收到錯誤請求錯誤,因爲您將錯誤的值傳遞給Facebook API。

首先,如果你是通過鏈接或網址上傳圖片/照片,那麼你必須使用「源」標籤和「鏈接」標籤,你在你的代碼有。第二,如果你要解決上述問題,我懷疑代碼會工作,看你的strpostimageurl實際上沒有一個有效的URL。

第三,由於它不是一個有效的URL,因此使用"source"標記將不是一個選項。您將需要使用像這樣:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bmpImageGallery.compress(CompressFormat.JPEG, 100, baos); 

Bundle postImgGallery = new Bundle(); 

// ADD THE PHOTO DATA TO THE BUNDLE 
postImgGallery.putByteArray("photo", baos.toByteArray()); 

// ADD THE CAPTION FROM THE STRING finalStatusMessage TO THE BUNDLE 
if (finalStatusMessage.equals("")) { 
    /***** DO NOTHING HERE  *****/ 
} else { 
    postImgGallery.putString("caption", finalStatusMessage); 
} 

mAsyncRunner.request("me/photos", postImgGallery, "POST", new PhotoUploadListener(), null); 

這裏,

  1. mAsyncRunnerAsyncFacebookRunner Class的一個實例是Facebook的SDK的一部分。
  2. bmpImageGallery是其中由所述用戶選擇的圖像被存儲在Bitmap的一個實例。它得到利用從圖庫中的用戶選擇的圖像:

這是代碼運行在OnClick事件打開的庫,讓用戶一Button的從中選擇一個照片/圖片:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(intent, reqcdGalleryImage); 

然後,使用onActivityResult()方法,所選擇的圖像被傳遞到在代碼先前使用的Bitmap實例bmpImageGallery

bmpImageGallery = MediaStore.Images.Media.getBitmap(this.getContentResolver(), targetURI); 

編輯:

那就試試這個(的OnClick):

Intent getCameraImage = new Intent("android.media.action.IMAGE_CAPTURE"); 

File cameraFolder; 

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
    cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),"give_a_folder_name/camera"); 
else 
    cameraFolder= StatusUpdate.this.getCacheDir(); 
if(!cameraFolder.exists()) 
    cameraFolder.mkdirs(); 

File photo = new File(Environment.getExternalStorageDirectory(), "give_a_folder_name/camera/camera_snap.jpg"); 
getCameraImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
initialURI = Uri.fromFile(photo); 

startActivityForResult(getCameraImage, 2); 

在這種onActivityResult()

targetURI = initialURI; 
getContentResolver().notifyChange(targetURI, null); 

ContentResolver cr = getContentResolver(); 

try { 

    // SET THE IMAGE FROM THE CAMERA TO THE IMAGEVIEW 
    bmpImageCamera = android.provider.MediaStore.Images.Media.getBitmap(cr, targetURI); 

    // SET THE IMAGE FROM THE GALLERY TO THE IMAGEVIEW 
    imgvwSelectedImage.setImageBitmap(bmpImageCamera); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

的targetURI中和initialURI是全局聲明

+0

我採取這一開放的情況下,從相機的圖像和存儲到sdcard.Can我可以使用這個路徑,以圖形api發佈。如果不可能,我怎樣才能轉換成瓦利d一個 – user1871951

+0

/mnt/sdcard/DCIM/mnt/sdcard/DCIM/Camera1354795516555.jpg舊/mnt/sdcard/DCIM/mnt/sdcard/DCIM/Camera/1354795516555.jpg新的,對嗎? – user1871951

+0

@ user1871951:檢查 –