Android 与 Facebook SharePhotoContent 分享图片 URL
Android share image URL with Facebook SharePhotoContent
我正在尝试使用 Facebook 新 SDK 中的新 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 中只看到一片空白 post。
有没有其他人试过这个并让它工作?
非常感谢!
如果您使用 link 而不是本地图像,则必须使用 ShareDialog 而不是 SharePhoto ,来自 doc
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("title")
.setContentDescription("description")
.setContentUrl(Uri.parse("your link"))
.build();
如果你想分享一张 URL 的图片,那么你应该使用 sharelinkcontent
:这是我的代码,它可以工作,但没有标题或描述,只有 图片url:
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Shared from nearbyme application")
.setContentDescription("This is a wonderful place")
.setContentUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
.setImageUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
.build();
shareDialog.show(content);
我所做的是从服务器下载图像并获取位图,然后post到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);
}
}
我正在尝试使用 Facebook 新 SDK 中的新 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 中只看到一片空白 post。
有没有其他人试过这个并让它工作?
非常感谢!
如果您使用 link 而不是本地图像,则必须使用 ShareDialog 而不是 SharePhoto ,来自 doc
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("title")
.setContentDescription("description")
.setContentUrl(Uri.parse("your link"))
.build();
如果你想分享一张 URL 的图片,那么你应该使用 sharelinkcontent
:这是我的代码,它可以工作,但没有标题或描述,只有 图片url:
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentTitle("Shared from nearbyme application")
.setContentDescription("This is a wonderful place")
.setContentUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
.setImageUrl(Uri.parse("http://www.villathena.com/images/nearby/thumbs/le-bus-bleu-private-tours.jpg"))
.build();
shareDialog.show(content);
我所做的是从服务器下载图像并获取位图,然后post到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);
}
}