Android 与 Facebook SharePhotoContent 分享图片 URL

标签 android facebook facebook-sdk-4.0 android-sharing

我正在尝试使用新 SDK 中 Facebook 的新 SharePhoto 和 SharePhotoContent 类来分享照片。 我想使用图片 URL 而不是本地存储的图片。

我能够使用本地存储的可绘制资源共享图像:

Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.carrots);

SharePhoto photo = new SharePhoto.Builder()
                   .setImageBitmap(image)
                   .build();

SharePhotoContent content = new SharePhotoContent.Builder()
                                .addPhoto(photo)
                                .build();

shareDialog.show(content);

但是当我尝试使用图像 URL 时:

SharePhoto photo = new SharePhoto.Builder()
                       .setImageUrl(Uri.parse("http://s3-ak.buzzfed.com/static/images/public/verticals/food-title.png?v=201504021353"))
                       .build();

我所看到的只是 Facebook shareDialog 中的空白帖子。

有没有其他人尝试过并让它工作?

非常感谢!

最佳答案

我所做的是从服务器下载图像并获取位图,然后发布到 FB:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FacebookSdk.sdkInitialize(getApplicationContext());

    Button btn = (Button)findViewById(R.id.btn_share);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getImage();
        }
    });
}

private void getImage(){
    new DownloadImgTask().execute("http://url.com/1.jpg");
}

private void postFB(Bitmap bm){
    SharePhoto photo = new SharePhoto.Builder().setBitmap(bm).build();
    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
    ShareDialog dialog = new ShareDialog(this);
    if (dialog.canShow(SharePhotoContent.class)){
        dialog.show(content);
    }
    else{
        Log.d("Activity", "you cannot share photos :(");
    }

}

private class DownloadImgTask extends AsyncTask<String, Void, Bitmap>{

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap bm = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            bm = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return bm;
    }

    protected void onPostExecute(Bitmap result) {
        postFB(result);
    }
}

关于Android 与 Facebook SharePhotoContent 分享图片 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425452/

相关文章:

ios - Facebook FBSDKAppInviteContent - 缺少应用程序链接 URL

android - 如何在 Android 中确定文件类型

android - 获取 facebook 相册和封面照片

android - OAuth推特获取request_token {"errors":[ {"code":32 ,"message" :"Could not authenticate you."}]}

javascript - 使用 Javascript 登录 Facebook 并记录新的 Parse Session

jquery - Facebook 通过 FB.ui 停止自定义参数(图像、标题、描述)?

android - Facebook SDK 依赖冲突

swift - 更新 Facebook SDK 问题

android - ShowCase View 是否有 Material Design 规范?

java.lang.NoClassDefFoundError 与 tomcat 和 axis2