Facebook APIに間違った値を渡したため、BadRequestエラーが発生します。
まず、リンクまたはURLを介して画像/写真をアップロードする場合は、コードにあるような「リンク」タグではなく、「ソース」タグを使用する必要があります。
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);
ここ、
mAsyncRunner
AsyncFacebookRunner Class
FacebookSDKの一部であるのインスタンスです。
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は、グローバルに宣言されたUriインスタンスです。