这是我在我的应用程序使用。它的工作原理。
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