2012-12-06 46 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:检查 –