34

As Facebook doesn't allow sharing text via Intent unless we use Facebook sdk, I am looking for a way around to achieve this.

I can think of 3 hacks which I can use:

1) As Facebook allows image sharing, I can generate a Bitmap with sharing text drawn onto it and share the image using Intent.

2) Facebook allows sharing URLs, for which it also displays the Head of the page while sharing. I can host a dedicated page on my server and pass values as parameter in the url, and generate the Head using it.(I have no experience with php, but I guess this is possible)

3) Copy text to clipboard and notify user about this.

OR

Use combinations of all 3.

Can anyone suggest me a much better way around to share my content on Facebook without using Facebook sdk?

Thanks in advance.

12
  • When I ran into this, my solution was to copy the text string to the clipboard, and notify the user via Toast, that they need to paste it. Crappy solution, but it works. Commented Jan 5, 2016 at 18:15
  • I am using this hack for one of my apps, but this time I am looking for much better way to share text. Commented Jan 5, 2016 at 18:17
  • You are not allowed to prefill the text for the user. You should read Facebook Platform Policy Commented Jan 5, 2016 at 18:21
  • @WizKid : I totally understand that. That's the reason I am looking for a way around. For eg: I can share an image with sharing text on it, and it doesn't violate the policy. Commented Jan 5, 2016 at 18:25
  • There is no way to share texts without violate policy Commented Jan 5, 2016 at 18:26

7 Answers 7

61
+25

There is no way you can share Text alone in the Facebook using android shareIntent.

It is possible only through Facebook SDK using share links functions.

Facebook simply ignores the Extra Text from the intent if there is an image. You can share image, but it does not allow you to share the Text content.

Unfortunately the Facebook sharing intent can only take a single URL with prefixed http:// and no additional text message. Actually facebook strips out the text content and allows only URL/Link. It is by Design and we have no control over it.

This will work

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "http://www.google.com"); startActivity(Intent.createChooser(sharingIntent, "Share via")); 

This will not work.

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(Intent.EXTRA_TEXT, "Share Text from App"); startActivity(Intent.createChooser(sharingIntent, "Share via")); 

Only approach you can share the text in the Facebook is using Facebook SDK.

Reference Links

Android share intent for facebook- share text AND link

Unable to share text with a link through Android Share Intent

Android and Facebook share intent

Sign up to request clarification or add additional context in comments.

12 Comments

Any way arounds to share my content on FB? like sharing an image with text drawn onto it. Or sharing a url and generate its head at run time.
do you want to share the image on FB? or Image separately, text separately on FB? Kindly clarify.
I just want to share bit of information on FB. I can think of sharing it via image or via a url or copying the text to clipboard and notify it to user so that user can paste it when FB app is opened. Any other tricks which I can use?
Why can't you try the Facebook SDK? which is simple enough for your need.
Just to share a single text, I won't go with implementing fb sdk in my app. And also, it's a managerial decision.
|
5

First of all, in order to share text on FB, you got to use FB SDK.

Without FB SDK better option is to go for a dedicated website with "OG" data, which will get resolved automatically. By this, you can change your OG data when ever you need a change.

I would suggest you to go for your hack number 2. But, with this approach, FB allows users to click on the link and redirects to the website, you may try to handle this according to your requirement.

I hope you are clarified with this.

For details on OG please check this Open Graph details

Comments

4

Use this function, I hope it will help

public static void share(Context context, String text, String subject, String title, String dialogHeaderText) { Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); intent.putExtra(android.content.Intent.EXTRA_TEXT, text); intent.putExtra(Intent.EXTRA_TITLE, title); context.startActivity(Intent.createChooser(intent, dialogHeaderText)); } 

Comments

4

This code lets you paste your content on only on facebook. what id do is get the list of all apps present in your phone and find the open then open facebook app if is already present

 Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text to be shared"); PackageManager pm = getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { final ActivityInfo activity = app.activityInfo; final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); shareIntent.setComponent(name); startActivity(shareIntent); break; } } 

4 Comments

If I follow the code correctly, it will open FB app with no sharing text in it. User is responsible to type or paste the text. right?
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text to be shared"); what this line does is you have your own copied text with you.
The EXTRA_TEXT text to be shared will not be shown when fb app openes.
Opening the facebook app is not ideal. Your code is on the right track. Once the if condition is met, instead of opening the facebook app, use facebook sdk to open its own share dialog so you can include text and image at the same time.
3

Check this :

Intent share=new Intent(Intent.ACTION_SEND); share.setType("text/plain"); share.putExtra(Intent.EXTRA_TEXT, "Some text you would like to share..."); share.setPackage("com.facebook.katana"); //Facebook App package startActivity(Intent.createChooser(share, "Title of the dialog the system will open")); 

You don't need facebook SDK with this code......

To enhance your UX, you can do a check if Facebook App(or FacebookLite App) ware installed...

2 Comments

this work for facebook lite but not on facebook.katana package
I use this FB package name on Android 7/8/9, all works fine. Did you got some exception ?
1

When you use native intent it's up to the app the user shares with if it uses the data from the intent or not.

This is a known bug and facebook have made this bug to wishlist. Maybe they are not trying to fix it. This is intentional to make people use FB SDK i think. refer this link http://forum.developers.facebook.net/viewtopic.php?id=93900 and this post

http://forum.developers.facebook.net/viewtopic.php?id=93900

2 Comments

(this doesn't answer the question) I totally understand that. That's the reason I am looking for a way around. For eg: I can share an image with sharing text on it, and it doesn't violate the policy. Any better suggestions?
I probably didn/t get your question then. Using text on an Image or copying the text to the clipboard and showing toast to paste can be possible workarounds. Shit. Downvoted :(
-1

If you don't mind other sharing options being presented you can just use a regular sharing intent with a picker since Facebook will be one of the options to share if they have it enabled.

Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); shareIntent.setType("text/plain"); startActivity(Intent.createChooser(shareIntent, "Choose sharing method")); 

3 Comments

This doesn't answer the question.
You asked for an alternative to sharing text content on Facebook, this method works, I think it does answer your question
This is my text to send. won't appear in Facebook app when its selected from chooser.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.