Android - Share on Facebook, Twitter, Mail, ecc

I need to develop an application with a share function. I have to share Facebook, Twitter, email and other services.

How can i do this? Is there a library on the net? For iOS development was ShareKit, but for Android?

Thank:)

+56
android facebook twitter share
Jul 25 '11 at 9:45
source share
12 answers

Paresh Mayani's answer is mostly correct. Just use Broadcast Intent so that the system and all other applications choose how content is shared.

To share the text, use the following code:

String message = "Text I want to share."; Intent share = new Intent(Intent.ACTION_SEND); share.setType("text/plain"); share.putExtra(Intent.EXTRA_TEXT, message); startActivity(Intent.createChooser(share, "Title of the dialog the system will open")); 
+78
Jul 25 '11 at 10:00
source share

yes you can ... you just need to know the exact name of the application package:

  • Facebook - "com.facebook.katana"
  • Twitter - "com.twitter.android"
  • Instagram - "com.instagram.android"
  • Pinterest - "com.pinterest"

And you can create an intention like this

 Intent intent = context.getPackageManager().getLaunchIntentForPackage(application); if (intent != null) { // The application exists Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setPackage(application); shareIntent.putExtra(android.content.Intent.EXTRA_TITLE, title); shareIntent.putExtra(Intent.EXTRA_TEXT, description); // Start the specific social application context.startActivity(shareIntent); } else { // The application does not exist // Open GooglePlay or use the default system picker } 
+32
Nov 19 '13 at 8:04 on
source share

I think that you want to give the "Share" button, clicking on which you need to select the appropriate media / site to share it. On Android, you need to create createChooser for the same.

Share text:

 Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is the text that will be shared."); startActivity(Intent.createChooser(sharingIntent,"Share using")); 

Sharing binary objects (images, videos, etc.)

 Intent sharingIntent = new Intent(Intent.ACTION_SEND); Uri screenshotUri = Uri.parse(path); sharingIntent.setType("image/png"); sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); startActivity(Intent.createChooser(sharingIntent, "Share image using")); 

For your information, the above code refers to sharing content in Android using ACTION_SEND Intent

+27
Jul 25 2018-11-11T00:
source share

Use this

 Facebook - "com.facebook.katana" Twitter - "com.twitter.android" Instagram - "com.instagram.android" Pinterest - "com.pinterest" SharingToSocialMedia("com.facebook.katana") public void SharingToSocialMedia(String application) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, bmpUri); boolean installed = checkAppInstall(application); if (installed) { intent.setPackage(application); startActivity(intent); } else { Toast.makeText(getApplicationContext(), "Installed application first", Toast.LENGTH_LONG).show(); } } private boolean checkAppInstall(String uri) { PackageManager pm = getPackageManager(); try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); return true; } catch (PackageManager.NameNotFoundException e) { } return false; } 
+6
Feb 20 '15 at 12:51
source share

ACTION_SEND will work correctly for everyone, and it takes the body of the text on the wall on Twitter, G mail .. but it does not work on the Face Book page ... Its a known error in the Android android SDK .. but still they did not fix it

+3
Mar 16 '12 at 12:27
source share

ACTION_SEND will only provide you with shipping options using GMail, YahooMail ... etc. (Any application installed on your phone that can run ACTION_SEND ). If you want to share on Facebook or Twitter, you will need to put custom buttons for each and use your own SDK, such as Facebook SDK or Twitter4J .

+1
Jul 26 '11 at 8:43
source share

I think the following code will help ....

 public void btnShareClick(View v) { // shareBtnFlag = 1; Dialog d = new Dialog(DrawAppActivity.this); d.requestWindowFeature(d.getWindow().FEATURE_NO_TITLE); d.setCancelable(true); d.setContentView(R.layout.sharing); final Button btnFacebook = (Button) d.findViewById(R.id.btnFacebook); final Button btnEmail = (Button) d.findViewById(R.id.btnEmail); btnEmail.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { if (!btnEmail.isSelected()) { btnEmail.setSelected(true); } else { btnEmail.setSelected(false); } saveBtnFlag = 1; // Check if email id is available------------- AccountManager manager = AccountManager .get(DrawAppActivity.this); Account[] accounts = manager.getAccountsByType("com.google"); Account account = CommonFunctions.getAccount(manager); if (account.name != null) { emailSendingTask eTask = new emailSendingTask(); eTask.execute(); if (CommonFunctions.createDirIfNotExists(getResources() .getString(R.string.path))) { tempImageSaving( getResources().getString(R.string.path), getCurrentImage()); } Intent sendIntent; sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("application/octet-stream"); sendIntent.setType("image/jpeg"); sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { account.name }); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Drawing App"); sendIntent.putExtra(Intent.EXTRA_TEXT, "Check This Image"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + tempPath.getPath())); List<ResolveInfo> list = getPackageManager() .queryIntentActivities(sendIntent, PackageManager.MATCH_DEFAULT_ONLY); if (list.size() != 0) { startActivity(Intent.createChooser(sendIntent, "Send Email Using:")); } else { AlertDialog.Builder confirm = new AlertDialog.Builder( DrawAppActivity.this); confirm.setTitle(R.string.app_name); confirm.setMessage("No Email Sending App Available"); confirm.setPositiveButton("Set Account", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); confirm.show(); } } else { AlertDialog.Builder confirm = new AlertDialog.Builder( DrawAppActivity.this); confirm.setTitle(R.string.app_name); confirm.setMessage("No Email Account Available!"); confirm.setPositiveButton("Set Account", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent i = new Intent( Settings.ACTION_SYNC_SETTINGS); startActivity(i); dialog.dismiss(); } }); confirm.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); confirm.show(); } } }); btnFacebook.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { if (!btnFacebook.isSelected()) { btnFacebook.setSelected(true); } else { btnFacebook.setSelected(false); } saveBtnFlag = 1; // if (connection.isInternetOn()) { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { getCurrentImage(); Intent i = new Intent(DrawAppActivity.this, FaceBookAuthentication.class); i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(i); } else { ShowAlertMessage.showDialog(DrawAppActivity.this, R.string.app_name, R.string.Sd_card, R.string.button_retry); } } }); d.show(); } 



 public void tempImageSaving(String tmpPath, byte[] image) { Random rand = new Random(); tempfile = new File(Environment.getExternalStorageDirectory(), tmpPath); if (!tempfile.exists()) { tempfile.mkdirs(); } tempPath = new File(tempfile.getPath(), "DrawApp" + rand.nextInt() + ".jpg"); try { FileOutputStream fos1 = new FileOutputStream(tempPath.getPath()); fos1.write(image); fos1.flush(); fos1.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } sendBroadcast(new Intent( Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); } public byte[] getCurrentImage() { Bitmap b = drawingSurface.getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); b.compress(Bitmap.CompressFormat.PNG, 100, stream); byteArray = stream.toByteArray(); return byteArray; } private class emailSendingTask extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { progressDialog = new ProgressDialog(DrawAppActivity.this); progressDialog.setTitle(R.string.app_name); progressDialog.setMessage("Saving..Please Wait.."); // progressDialog.setIcon(R.drawable.icon); progressDialog.show(); } @Override protected String doInBackground(String... urls) { String response = ""; try { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { response = "Yes"; } else { ShowAlertMessage.showDialog(DrawAppActivity.this, R.string.app_name, R.string.Sd_card, R.string.button_retry); } } catch (Exception e) { e.printStackTrace(); } return response; } @Override protected void onPostExecute(String result) { if (result.contains("Yes")) { getCurrentImage(); } sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); progressDialog.cancel(); } } private class ImageSavingTask extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { progressDialog = new ProgressDialog(DrawAppActivity.this); progressDialog.setTitle(R.string.app_name); progressDialog.setMessage("Saving..Please Wait.."); // progressDialog.setIcon(R.drawable.icon); progressDialog.show(); } @Override protected String doInBackground(String... urls) { String response = ""; try { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { response = "Yes"; } else { ShowAlertMessage.showDialog(DrawAppActivity.this, R.string.app_name, R.string.Sd_card, R.string.button_retry); } } catch (Exception e) { e.printStackTrace(); } return response; } @Override protected void onPostExecute(String result) { if (result.contains("Yes")) { getCurrentImage(); if (CommonFunctions.createDirIfNotExists(getResources() .getString(R.string.path))) { saveImageInSdCard(getResources().getString(R.string.path), getCurrentImage()); } } sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); progressDialog.cancel(); } } 

For facebook application use facebook sdk

+1
Oct 05 '12 at 8:19
source share

This will allow you to share your application with any application, etc .:

 try { Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_SUBJECT, "My application name"); String sAux = "\nLet me recommend you this application\n\n"; sAux = sAux + "https://play.google.com/store/apps/details?id=Orion.Soft \n\n"; i.putExtra(Intent.EXTRA_TEXT, sAux); startActivity(Intent.createChooser(i, "choose one")); 
0
Jan 13 '16 at 12:11
source share
 String message = "This is testing." Intent shareText = new Intent(Intent.ACTION_SEND); shareText .setType("text/plain"); shareText .putExtra(Intent.EXTRA_TEXT, message); startActivity(Intent.createChooser(shareText , "Title of the dialog the system will open")); 
0
Oct 06 '16 at 12:18
source share
 sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"your subject" ); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "your text"); startActivity(Intent.createChooser(sharingIntent, "")); 
0
Apr 30 '19 at 11:58
source share

It will help

1- First define these constants

  public static final String FACEBOOK_PACKAGE_NAME = "com.facebook.katana"; public static final String TWITTER_PACKAGE_NAME = "com.twitter.android"; public static final String INSTAGRAM_PACKAGE_NAME = "com.instagram.android"; public static final String PINTEREST_PACKAGE_NAME = "com.pinterest"; public static final String WHATS_PACKAGE_NAME = "com.whatsapp"; 

2- Second Use This Method

  public static void shareAppWithSocial(Context context, String application, String title, String description) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setPackage(application); intent.putExtra(android.content.Intent.EXTRA_TITLE, title); intent.putExtra(Intent.EXTRA_TEXT, description); intent.setType("text/plain"); try { // Start the specific social application context.startActivity(intent); } catch (android.content.ActivityNotFoundException ex) { // The application does not exist Toast.makeText(context, "app have not been installed.", Toast.LENGTH_SHORT).show(); } } 
0
May 4 '19 at 7:07
source share

Create Select Editable

 Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name"); String sAux = "\nLet me recommend you this application\n\n"; sAux = sAux + "https://play.google.com/store/apps/details?id=the.package.id \n\n"; sendIntent.putExtra(Intent.EXTRA_TEXT, sAux); startActivity(Intent.createChooser(sendIntent, "choose one")); 

=================================================== =============

Create Select Default

  Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); startActivity(sendIntent); 

=================================================== ================

Multi-piece send

Submit multiple pieces of content

To share multiple pieces of content, use the ACTION_SEND_MULTIPLE action along with a list of URIs that point to the content. The type of MIME depends on the type of content you are sharing. For example, if you transfer 3 images in JPEG format, the type is still "image/jpeg" . For a mixture of image types, this should be "image/*" to match the activity that processes any type of image. You should use the "*/*" case if you are using different types. As stated earlier, this is before receiving an application to analyze and process your data. Here is an example:

 ArrayList<Uri> imageUris = new ArrayList<Uri>(); imageUris.add(imageUri1); // Add your image URIs here imageUris.add(imageUri2); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share images to..")); 

=================================================== ===============

Share with Facebook

  ShareLinkContent shareLinkContent = new ShareLinkContent.Builder() .setQuote("Application of social rating share with your friend") .setContentUrl(Uri.parse("https://google.com")) .build(); if (ShareDialog.canShow(ShareLinkContent.class)) { sd.show(shareLinkContent); } 

=================================================== =============

Share with SMS

  Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.putExtra("Body", "Application of social rating share with your friend"); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent); 

=================================================== =============

Share with Email

  Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null)); emailIntent.putExtra(Intent.EXTRA_EMAIL, "Address"); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Application of social rating share with your friend"); emailIntent.putExtra(Intent.EXTRA_TEXT, "Body"); startActivity(Intent.createChooser(emailIntent, "Send Email...")); 

=================================================== ============

Share with WhatsApp

  Intent whatsappIntent = new Intent(Intent.ACTION_SEND); whatsappIntent.setType("text/plain"); whatsappIntent.setPackage("com.whatsapp"); whatsappIntent.putExtra(Intent.EXTRA_TEXT, "Application of social rating share with your friend"); try { Objects.requireNonNull(getActivity()).startActivity(whatsappIntent); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(getActivity(), "WhatsApp have not been installed.", Toast.LENGTH_SHORT).show(); } 
0
Jul 05 '19 at 11:07
source share



All Articles