這是我在我的應用程序使用。它的工作原理。
protected void uploadPhoto() {
if (!Utility.mFacebook.isSessionValid()) {
Util.showAlert(this, "Warning", "You must first log in.");
} else {
if (targetUri != null) {
Bundle params = new Bundle();
try {
params.putByteArray("photo", Utility.scaleImage(getApplicationContext(), targetUri));
} catch (Exception e) {
e.printStackTrace();
}
params.putString("caption", txtPhotoCaption.getText().toString());
Utility.mAsyncRunner.request("replace this with the users ID"+ "/photos&access_token=" + Utility.mFacebook.getAccessToken(),
params, "POST", new PhotoUploadListener(), null);
txtPhotoCaption.setText("");
Toast.makeText(getApplicationContext(), "Photo uploaded successfully", Toast.LENGTH_SHORT).show();
this.finish();
}
}
}
請注意,我使用的是與示例應用程序中使用的方法相同的方法。沒有考慮縮放或不縮放圖像的優點或缺點。正在從EditText中拉取「標題」屬性。實際圖像位於「targetUri」字段中,該字段被聲明爲全局變量。它使用設備上的默認圖庫獲取圖像。爲了完整起見,這是從默認圖庫應用程序獲取圖像的代碼。 (此提示用戶選擇應用程序)
btnAddPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 0);
}
});
而且它在onActivityResult()
這裏處理:
注意:我也設置所選圖像中的ImageView作爲預覽到登錄的用戶
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Bitmap bitmap = null;
if (resultCode == RESULT_OK) {
targetUri = data.getData();
Log.e("IMG URI", targetUri.toString());
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
try {
Utility.scaleImage(getApplicationContext(), targetUri);
imgDisplaySelectedImage.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
我再次測試上傳到朋友牆之前,我在這裏發佈的代碼作爲一個答案。它真的有用。希望這對你也有幫助。
編輯:
在最新的評論中提到,使用Intent.ACTION_GET_CONTENT沒有發揮與onActivityResult下的預覽圖像的顯示漂亮的()。修改代碼有點奏效。
我覺得奇怪的是,在「完成操作使用」彈出窗口中,我沒有獲得我的Galaxy S上的Astro文件管理器和畫廊。它給了我文件管理器(離開市場,而不是股票)和Quickoffice Pro。這就是說,從兩個仍然作品和照片的選擇仍然上傳。
似乎沒有更好的工作,我得到了同樣的結果。 – Slacker616
等待,您正試圖張貼到用戶供稿,該路徑不期望圖片。如果您檢查[文檔](http://developers.facebook.com/docs/reference/api/user/#posts),您會看到「圖片」參數是一個字符串。你想做什麼?張貼圖片到牆上的照片? –
是的,其實我使用第一個代碼與「圖片」參數上傳圖片到用戶的牆上,但我這樣做獲得牆專輯ID,但現在我想張貼在用戶的朋友牆上的圖片。 – Slacker616