How to Share Image + Text together using ACTION_SEND in android? How to Share Image + Text together using ACTION_SEND in android? android android

How to Share Image + Text together using ACTION_SEND in android?


you can share plain text by these codes

String shareBody = "Here is the share content body";    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);        sharingIntent.setType("text/plain");        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);        startActivity(Intent.createChooser(sharingIntent, getResources().getString(R.string.share_using)));

so your full code (your image+text) becomes

      private Uri imageUri;      private Intent intent;            imageUri = Uri.parse("android.resource://" + getPackageName()                    + "/drawable/" + "ic_launcher");            intent = new Intent(Intent.ACTION_SEND);//text            intent.putExtra(Intent.EXTRA_TEXT, "Hello");//image            intent.putExtra(Intent.EXTRA_STREAM, imageUri);//type of things            intent.setType("*/*");//sending            startActivity(intent);

I just replaced image/* with */*

update:

Uri imageUri = Uri.parse("android.resource://" + getPackageName()        + "/drawable/" + "ic_launcher"); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello"); shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); shareIntent.setType("image/jpeg"); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(Intent.createChooser(shareIntent, "send"));


please have a look on this code worked for me to share an text and image together

Intent shareIntent;    Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+"/Share.png";    OutputStream out = null;    File file=new File(path);    try {        out = new FileOutputStream(file);        bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);        out.flush();        out.close();    } catch (Exception e) {        e.printStackTrace();    }    path=file.getPath();    Uri bmpUri = Uri.parse("file://"+path);    shareIntent = new Intent(android.content.Intent.ACTION_SEND);    shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);    shareIntent.putExtra(Intent.EXTRA_TEXT,"Hey please check this application " + "https://play.google.com/store/apps/details?id=" +getPackageName());    shareIntent.setType("image/png");    startActivity(Intent.createChooser(shareIntent,"Share with"));

Don't forget to give WRITE_EXTERNAL_STORAGE Permission

also in facebook it can only share the image because facebook is not allowing to share the text via intent


It is possibly because the sharing app (FB, twitter, etc) may not have permissions to read the image.

Google's document says:

The receiving application needs permission to access the data the Uri points to. The recommended ways to do this are:

http://developer.android.com/training/sharing/send.html

I am not sure the sharing apps have permissions to read an image in the bundle of our apps. But my files saved in

 Activity.getFilesDir()

cannot be read. As suggested in the above link, we may consider to store images in the MediaStore, where the sharing apps have permissions to read.

Update1:The following is working code to share image with text in Android 4.4.

        Bitmap bm = BitmapFactory.decodeFile(file.getPath());        intent.putExtra(Intent.EXTRA_TEXT, Constant.SHARE_MESSAGE            + Constant.SHARE_URL);        String url= MediaStore.Images.Media.insertImage(this.getContentResolver(), bm, "title", "description");        intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));        intent.setType("image/*");        startActivity(Intent.createChooser(intent, "Share Image"));

The side effect is we add an image in the MediaStore.