Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: How to share image with text on facebook via intent?

I'd like to share a photo with caption pre-filled from my app via a share intent, on facebook.

Example code

Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("image/*");        intent.putExtra(Intent.EXTRA_TEXT, "eample"); intent.putExtra(Intent.EXTRA_TITLE, "example"); intent.putExtra(Intent.EXTRA_SUBJECT, "example"); intent.putExtra(Intent.EXTRA_STREAM, imageUri);  Intent openInChooser = new Intent(intent); openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents); startActivity(openInChooser); 

Here is screen shot what I get

Text is not display

If a set type to image/* then a photo is uploaded without the text prefilled. If a set it to text/plain photo is not display.....

like image 392
Mansi Avatar asked Mar 20 '14 12:03

Mansi


People also ask

What is Share intent Android?

Intent class to send data from one activity to another and from current activity to outside the application. Intent class needs to specify the data and its type which is to be share. Most commonly, ACTION_SEND action sends URL of build-in Browser app.


1 Answers

The newest Facebook versions doesn't allow you to share text using intents. You have to use the Facebook SDK to do it - to make that simple, use the Facebook SDK + Android Simple Facebook (https://github.com/sromku/android-simple-facebook). Using the library, your code would be like this (extracted from the Simple Facebook site):

Publish feed

Set OnPublishListener and call for:

  • publish(Feed, OnPublishListener) without dialog.
  • publish(Feed, true, OnPublishListener) with dialog.

Basic properties

  • message - The message of the user
  • name - The name of the link attachment
  • caption - The caption of the link (appears beneath the link name)
  • description - The description of the link (appears beneath the link caption)
  • picture - The URL of a picture attached to this post. The picture must be at least 200px by 200px
  • link - The link attached to this post

Initialize callback listener:

OnPublishListener onPublishListener = new OnPublishListener() {     @Override         public void onComplete(String postId) {             Log.i(TAG, "Published successfully. The new post id = " + postId);         }       /*        * You can override other methods here:        * onThinking(), onFail(String reason), onException(Throwable throwable)       */ }; 

Build feed:

Feed feed = new Feed.Builder()     .setMessage("Clone it out...")     .setName("Simple Facebook for Android")     .setCaption("Code less, do the same.")     .setDescription("The Simple Facebook library project makes the life much easier by coding less code for being able to login, publish feeds and open graph stories, invite friends and more.")     .setPicture("https://raw.github.com/sromku/android-simple-facebook/master/Refs/android_facebook_sdk_logo.png")     .setLink("https://github.com/sromku/android-simple-facebook")     .build(); 

Publish feed without dialog:

mSimpleFacebook.publish(feed, onPublishListener); 

Publish feed with dialog:

mSimpleFacebook.publish(feed, true, onPublishListener); 


Update on 14 December 2015


according to New Facebook SDK.

facebook-android-sdk:4.6.0

It's very Simple.
1. create Provider in Android.manifest.xml

<provider             android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"             android:name="com.facebook.FacebookContentProvider"             android:exported="true" /> 

2. Create Your Share Intent with Data.

ShareHashtag shareHashTag = new ShareHashtag.Builder().setHashtag("#YOUR_HASHTAG").build(); ShareLinkContent shareLinkContent = new ShareLinkContent.Builder()                 .setShareHashtag(shareHashTag)                 .setQuote("Your Description")                 .setContentUrl(Uri.parse("image or logo [if playstore or app store url then no need of this image url]"))                 .build(); 


3. Show The Share Dialog

ShareDialog.show(ShowNavigationActivity.this,shareLinkContent); 


That's It.

like image 194
Eduardo Oliveira Avatar answered Oct 08 '22 06:10

Eduardo Oliveira