After a lot of time, finally I found a solution:
URL url = null; try { url = new URL(imageurl); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection connection = null; InputStream input = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); input = connection.getInputStream(); } catch (IOException e) { e.printStackTrace(); } Bitmap immutableBpm = BitmapFactory.decodeStream(input); Bitmap mutableBitmap = immutableBpm.copy(Bitmap.Config.ARGB_8888, true); View view = new View(this); view.draw(new Canvas(mutableBitmap)); String path = Images.Media.insertImage(getContentResolver(), mutableBitmap, "rbt", null); Uri uri = Uri.parse(path); Intent intent = new Intent(); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.putExtra(Intent.EXTRA_EMAIL, new String[]{" test.android@gmail.com "}); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_TEXT, body); intent.setPackage("com.google.android.gm"); startActivity(intent);
And add below permission in manifest.xml
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
It works perfect for me.
source share