How to share image URL to WhatsApp in Android?
14,111
Solution 1
CheckOut this answer
How to share an image on whats app which is set on an ImageView in android.
BTW i dont get it why are you doing image_url.toString()
? It is already in string right ?
And try this code also.
String image_url = "http://images.cartradeexchange.com//img//800//vehicle//Honda_Brio_562672_5995_6_1438153637072.jpg";
Intent shareIntent = new Intent();
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.setAction(Intent.ACTION_SEND);
//without the below line intent will show error
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, image_url);
// Target whatsapp:
shareIntent.setPackage("com.whatsapp");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
startActivity(shareIntent);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(InventoryManageOnlineActivity.this,
"Whatsapp have not been installed.",
Toast.LENGTH_SHORT).show();
}
Solution 2
First you need to load image in glide then you can share it to anywhere.
Code to load image from glide (image is being saved to storage, you can delete it later)
Glide.with(getApplicationContext())
.load(imagelink) \\link of your image file (url)
.asBitmap().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE)
.into(new SimpleTarget<Bitmap>(250, 250) {@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Hey view/download this image");
String path = MediaStore.Images.Media.insertImage(getContentResolver(), resource, "", null);
Log.i("quoteswahttodo", "is onresoursereddy" + path);
Uri screenshotUri = Uri.parse(path);
Log.i("quoteswahttodo", "is onresoursereddy" + screenshotUri);
intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
intent.setType("image/*");
startActivity(Intent.createChooser(intent, "Share image via...")); // if you want to share with whatsapp only replace with below code
}
@Override public void onLoadFailed(Exception e, Drawable errorDrawable) {
Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show();
super.onLoadFailed(e, errorDrawable);
}
@Override public void onLoadStarted(Drawable placeholder) {
Toast.makeText(getApplicationContext(), "Starting", Toast.LENGTH_SHORT).show();
super.onLoadStarted(placeholder);
}
});
Here replace for Whatsapp:
sendd.setPackage("com.whatsapp");
try {
startActivity(sendd);
} catch (Exception e) {
Toast.makeText(FinishedDoing.this, "It seem like Whatsapp is not been installed", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
Author by
rams
Updated on June 27, 2022Comments
-
rams almost 2 years
I need to share an image to WhatsApp in my app. I have the image URL. For sharing to WhatsApp, I am using the following code.
String image_url = "http://images.cartradeexchange.com//img//800//vehicle//Honda_Brio_562672_5995_6_1438153637072.jpg"; URI uri = null; try { uri = new URI(image_url.toString()); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.e("uri=", "" + uri); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uri); shareIntent.setType("image/jpg"); // Target whatsapp: shareIntent.setPackage("com.whatsapp"); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); try { startActivity(shareIntent); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(InventoryManageOnlineActivity.this, "Whatsapp have not been installed.", Toast.LENGTH_SHORT).show(); }
But it didn't work. I am getting the following error.
08-26 11:57:34.674: W/Bundle(19447): Key android.intent.extra.STREAM expected Parcelable but value was a java.net.URI. The default value <null> was returned. 08-26 11:57:34.738: W/Bundle(19447): Attempt to cast generated internal exception: 08-26 11:57:34.738: W/Bundle(19447): java.lang.ClassCastException: java.net.URI cannot be cast to android.os.Parcelable 08-26 11:57:34.738: W/Bundle(19447): at android.os.Bundle.getParcelable(Bundle.java:810) 08-26 11:57:34.738: W/Bundle(19447): at android.content.Intent.getParcelableExtra(Intent.java:4850) 08-26 11:57:34.738: W/Bundle(19447): at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7548) 08-26 11:57:34.738: W/Bundle(19447): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1545) 08-26 11:57:34.738: W/Bundle(19447): at android.app.Activity.startActivityForResult(Activity.java:3746) 08-26 11:57:34.738: W/Bundle(19447): at android.app.Activity.startActivityForResult(Activity.java:3707) 08-26 11:57:34.738: W/Bundle(19447): at android.app.Activity.startActivity(Activity.java:4027) 08-26 11:57:34.738: W/Bundle(19447): at android.app.Activity.startActivity(Activity.java:3989) 08-26 11:57:34.738: W/Bundle(19447): at com.cartradrexchange.inventory.InventoryManageOnlineActivity$ManageOnlineAdapter.onClick(InventoryManageOnlineActivity.java:441) 08-26 11:57:34.738: W/Bundle(19447): at android.view.View.performClick(View.java:4761) 08-26 11:57:34.738: W/Bundle(19447): at android.view.View$PerformClick.run(View.java:19767) 08-26 11:57:34.738: W/Bundle(19447): at android.os.Handler.handleCallback(Handler.java:739) 08-26 11:57:34.738: W/Bundle(19447): at android.os.Handler.dispatchMessage(Handler.java:95) 08-26 11:57:34.738: W/Bundle(19447): at android.os.Looper.loop(Looper.java:135) 08-26 11:57:34.738: W/Bundle(19447): at android.app.ActivityThread.main(ActivityThread.java:5312) 08-26 11:57:34.738: W/Bundle(19447): at java.lang.reflect.Method.invoke(Native Method) 08-26 11:57:34.738: W/Bundle(19447): at java.lang.reflect.Method.invoke(Method.java:372) 08-26 11:57:34.738: W/Bundle(19447): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 08-26 11:57:34.738: W/Bundle(19447): at com.android.internal.os.ZygoteInit.main(Zygote
For that, I searched a lot in Google, and I followed the below URL
Android sharing image doesn't work.
But it is not useful for me. Please show me how to share image URLs.