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.