从Android应用程序向Facebook发布照片,照片来自Android Gallery
我目前正在开发一个Android应用程序,目标版本是4.0冰淇淋三明治 到目前为止,我可以用以下代码在Facebook上发布普通文本:从Android应用程序向Facebook发布照片,照片来自Android Gallery,android,facebook,post,image,Android,Facebook,Post,Image,我目前正在开发一个Android应用程序,目标版本是4.0冰淇淋三明治 到目前为止,我可以用以下代码在Facebook上发布普通文本: public void postToWall() { // post on user's wall. facebook.dialog(this, "feed", new DialogListener() { @Override public void onFacebookError(FacebookError e
public void postToWall() {
// post on user's wall.
facebook.dialog(this, "feed", new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onComplete(Bundle values) {
}
@Override
public void onCancel() {
}
});
}
但是,我无法在Facebook上发布带有标题的照片。我在网上搜索过,找到的代码之一是:
public void postToWall() {
// post on user's wall.
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile(photoToPost);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
}
问题是,上面的代码不起作用,因为我不知道是什么:
1.photoToPost
2.mAsyncRunner.request不断给我一个错误,说明我不能输入“null”,因为这是一个无效的参数
3.SampleUploadListener,应该是来自FacebookSDK的,但它也不能正常工作(我在创建类时不断遇到错误)
这里有更简单的代码吗?或者有人能给我解释一下我所经历的错误吗
到目前为止,我使用“点击”将普通文本发布到Facebook上,它指向了这种方法。我的目标是上传一张带有标题的照片到Facebook上
谢谢大家的帮助 看看这个。这将向你们展示如何在FaceBook的墙上张贴图片,以及如何在墙上张贴文字
这很好学。1-这是您的照片,将被发送到墙上,它可以是您的SD卡或其他任何地方的图像 2-这是Facebook SDK中的一个类,它接受Facebook对象(之前创建的一个u) 3-这又是一个来自Facebook SDK的类 您的Facebook SDK似乎有问题
尝试使用右键单击Project>>Properties>>Android再次设置它,查看库是否存在
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);
您正在将null作为图形路径传递,应该是这样的=“me/feed”
更新
写这行代码
mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener(), null);
那么它应该会起作用
public class CardShared extends Activity{
public static final String APP_ID = "YOUR APP ID";
private Facebook mFacebook;
private AsyncFacebookRunner mAsyncRunner ;
boolean isLoggedIn = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
mFacebook = new Facebook(APP_ID);
mAsyncRunner = new AsyncFacebookRunner(mFacebook);
//Implementing SSO
mFacebook.authorize(this, new String[]{"publish_stream"}, new DialogListener(){
public void onComplete(Bundle values) {
sharePicture(values.getString(Facebook.TOKEN));
Toast.makeText(getApplicationContext(), "Picture Shared Successfully", Toast.LENGTH_SHORT).show();
CardShared.this.finish();
}
public void onFacebookError(FacebookError e) {
Log.d("FACEBOOK ERROR","FB ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
}
public void onError(DialogError e) {
Log.e("ERROR","AUTH ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
}
public void onCancel() {
Log.d("CANCELLED","AUTH CANCELLED");
}
});
}
//updating Status
public void sharePicture(String accessToken){
byte[] data = null;
try {
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image_to_be_uploaded);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Bundle params = new Bundle();
params.putString("method", "photos.upload");
params
.putString(Facebook.TOKEN, mFacebook
.getAccessToken());
params.putByteArray("picture", data);
mAsyncRunner.request(null, params, "POST",
new SampleUploadListener(), null);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("onActivityResult","onActivityResult");
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
public class SampleUploadListener extends BaseRequestListener {
public void onComplete(final String response, final Object state) {
try {
Log.d("Facebook-Example", "Response: " + response.toString());
JSONObject json = Util.parseJson(response);
final String f = json.getString("src");
} catch (JSONException e) {
Log.w("Facebook-Example", "JSON Error in response");
} catch (FacebookError e) {
Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
}
}
}
}像这样放
mAsyncRunner.request("me/feed", params, "POST", new SampleUploadListener())
你看到右边所有的相关问题了吗?1.是图像的文件对象。您可以从图库中搜索并获取图像。2.选中此项请提取必要的上传图像部分。如果引用的站点已关闭,此答案将无效。您好!谢谢你的链接。我看到了代码,它根据已经上传的图像(代码通过URL获取图像)将图像发布到Facebook墙上。虽然这不是我想要的,但我也从中学到了很多。非常感谢。好啊你想从sd卡上传照片还是什么的?嗨!谢谢你的回复!我会再检查一遍,然后再给你回复!1-那么我可以创建一个字符串变量来保存图像吗?对于其余部分,我设法获得了类代码,但仍然得到了mAsyncRunner.request的错误(“me/feed”,params,“POST”,new SampleUploadListener(),null);错误如下:类型AsyncFacebookRunner中的方法请求(String、Bundle、String、AsyncFacebookRunner.RequestListener、Object)不适用于参数(String、Bundle、String、MainActivity.SampleUploadListener、null);1-不,您不能将图像放入字符串变量中!这就是我所说的,你可以把图片的URL放到字符串中,而不是整个文件,你需要用位图来解码哦!!!好,好。我设法从我的R.drawable上贴了一张图片。现在,我正试图发布一张来自多媒体资料的图片(应该提示用户从手机的多媒体资料中选择要上传到Facebook的图片)。我将就此发表另一个问题。谢谢你好也感谢您的快速响应。我会尝试一下,让你知道我的进展再次!(我是一名高中生,所以编程对我来说还是一种新鲜事物)。嗨,我在这行图像中遇到了一个空异常错误。compress(Bitmap.CompressFormat.JPEG,100,baos);我不知道如何处理photoToPost。我把它声明为一个字符串。我很确定它是空的,但是我如何用安卓画廊的照片来填充它呢?请帮忙!谢谢我也不确定该将该方法放在何处共享,它不断出现括号错误。你有一个包含所有方法的示例类吗?现在看看我编辑的答案,这是一个完整的类。你只需要在这里输入意图,可以通过点击按钮或“上传”。现在你可以看到,位图图像是保存在你的可绘制文件夹中的图像,这个图像将被上传。你必须提供你想要上传到FaceBook上的图像的位图。嗯,我仍然对“我/订阅源”很困惑。可以再解释一下吗?编程对我来说还是新的。。。谢谢你的快速回复!:)你只要写这行而不是那行