这是我在我的应用程序中使用的。它有效。
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 . 话虽如此,两者的选择仍然有效,照片仍然上传。