Ich habe eine Image Galley App in dieser App. Ich habe alle Bilder in den Ordner drawable-hdpi gelegt. und ich habe Bilder in meiner Aktivität so genannt:
private Integer[] imageIDs = {
R.drawable.wall1, R.drawable.wall2,
R.drawable.wall3, R.drawable.wall4,
R.drawable.wall5, R.drawable.wall6,
R.drawable.wall7, R.drawable.wall8,
R.drawable.wall9, R.drawable.wall10
};
Jetzt möchte ich wissen, wie ich diese Bilder mit Sharing Intent teilen kann. Ich habe den Freigabecode wie folgt geputtet:
Button shareButton = (Button) findViewById(R.id.share_button);
shareButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse(Images.Media.EXTERNAL_CONTENT_URI + "/" + imageIDs);
sharingIntent.setType("image/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));
}
});
Und ich habe die Freigabeschaltfläche auch, wenn ich auf die Freigabeschaltfläche klicke. Die Freigabebox öffnet sich. Wenn ich jedoch auf einen Dienst geklickt habe, stürzt er meistens ab oder einige Dienste sagen: Bild kann nicht geöffnet werden ????
Bearbeiten:
Ich habe versucht, den folgenden Code zu verwenden. Aber es funktioniert nicht.
Button shareButton = (Button) findViewById(R.id.share_button);
shareButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse("android.resource://com.android.test/*");
try {
InputStream stream = getContentResolver().openInputStream(screenshotUri);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sharingIntent.setType("image/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));
}
});
Wenn es Ihnen nichts ausmacht, korrigieren Sie bitte meinen obigen Code ODER geben Sie mir ein geeignetes Beispiel. PLZ Wie teile ich meine Bilder aus dem Ordner drawable-hdpi?
Antworten:
Bitmap icon = mBitmap; Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/jpeg"); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes); File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg"); try { f.createNewFile(); FileOutputStream fo = new FileOutputStream(f); fo.write(bytes.toByteArray()); } catch (IOException e) { e.printStackTrace(); } share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/temporary_file.jpg")); startActivity(Intent.createChooser(share, "Share Image"));
quelle
File f = File.createTempFile("sharedImage", suffix, getExternalCacheDir());
und die Verwendungshare.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
?Die von superM vorgeschlagene Lösung hat lange für mich funktioniert, aber kürzlich habe ich sie auf 4.2 (HTC One) getestet und sie hat dort nicht mehr funktioniert. Ich bin mir bewusst, dass dies eine Problemumgehung ist, aber es war die einzige, die für mich mit allen Geräten und Versionen funktioniert hat.
Gemäß der Dokumentation werden Entwickler gebeten, "den System MediaStore zu verwenden" , um binäre Inhalte zu senden. Dies hat jedoch den (Nachteil), dass der Medieninhalt dauerhaft auf dem Gerät gespeichert wird.
Wenn dies eine Option für Sie ist, möchten Sie möglicherweise die Berechtigung erteilen
WRITE_EXTERNAL_STORAGE
und den systemweiten MediaStore verwenden.Bitmap icon = mBitmap; Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/jpeg"); ContentValues values = new ContentValues(); values.put(Images.Media.TITLE, "title"); values.put(Images.Media.MIME_TYPE, "image/jpeg"); Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); OutputStream outstream; try { outstream = getContentResolver().openOutputStream(uri); icon.compress(Bitmap.CompressFormat.JPEG, 100, outstream); outstream.close(); } catch (Exception e) { System.err.println(e.toString()); } share.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(share, "Share Image"));
quelle
Fügen Sie zuerst die Berechtigung hinzu
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Verwenden von Bitmap aus Ressourcen
Bitmap b =BitmapFactory.decodeResource(getResources(),R.drawable.userimage); Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/jpeg"); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); b.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(getContentResolver(), b, "Title", null); Uri imageUri = Uri.parse(path); share.putExtra(Intent.EXTRA_STREAM, imageUri); startActivity(Intent.createChooser(share, "Select"));
Getestet über Bluetooth und andere Messenger
quelle
Ich fand, dass der einfachste Weg, dies zu tun, darin besteht, den MediaStore zu verwenden, um das Bild, das Sie freigeben möchten, vorübergehend zu speichern:
Drawable mDrawable = mImageView.getDrawable(); Bitmap mBitmap = ((BitmapDrawable) mDrawable).getBitmap(); String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Image Description", null); Uri uri = Uri.parse(path); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/jpeg"); intent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(intent, "Share Image"));
Von: Inhalte mit Absichten teilen
quelle
canvas
Variable wird nicht benötigt , sie wird nirgendwo verwendet.So teilen Sie Bilder in Android progamatisch. Manchmal möchten Sie einen Schnappschuss Ihrer Ansicht machen und diese dann gerne freigeben. Gehen Sie also folgendermaßen vor: 1. Fügen Sie der Mainfest-Datei die Berechtigung hinzu
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.Sehr Machen Sie zuerst einen Screenshot Ihrer Ansicht, zum Beispiel Bildansicht, Textansicht, Framelayout, LinearLayout usw.
Zum Beispiel haben Sie eine Bildansicht, um einen Screenshot zu machen. Rufen Sie diese Methode in oncreate () auf.
ImageView image= (ImageView)findViewById(R.id.iv_answer_circle); ///take a creenshot screenShot(image);
Nach dem Aufnehmen eines Screenshots rufen Sie die Bildmethode entweder beim
Klicken auf die Schaltfläche oder an der gewünschten Stelle auf
shareBitmap(screenShot(image),"myimage");
Nach dem Erstellen der Methode definieren Sie diese beiden Methoden ##
public Bitmap screenShot(View view) { Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); return bitmap; } //////// this method share your image private void shareBitmap (Bitmap bitmap,String fileName) { try { File file = new File(getContext().getCacheDir(), fileName + ".png"); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); file.setReadable(true, false); final Intent intent = new Intent( android.content.Intent.ACTION_SEND); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType("image/png"); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } }
quelle
Einfachster und einfachster Code, mit dem Sie Bilder aus der Galerie freigeben können.
String image_path; File file = new File(image_path); Uri uri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_SEND); intent .setType("image/*"); intent .putExtra(Intent.EXTRA_STREAM, uri); context.startActivity(intent );
quelle
Hier ist eine Lösung, die für mich funktioniert hat. Ein Problem ist, dass Sie die Bilder an einem freigegebenen oder nicht App-privaten Speicherort speichern müssen ( http://developer.android.com/guide/topics/data/data-storage.html#InternalCache ).
Viele Vorschläge besagen, dass im
Apps
"privaten" Cache-Speicherort gespeichert werden soll, aber dies ist natürlich nicht über andere externe Anwendungen zugänglich, einschließlich der generischen Absicht "Share File", die verwendet wird. Wenn Sie dies versuchen, wird es ausgeführt, aber Dropbox zeigt Ihnen beispielsweise an, dass die Datei nicht mehr verfügbar ist./ * SCHRITT 1 - Speichern Sie die Bitmap-Datei lokal mit der folgenden Funktion zum Speichern von Dateien. * /
localAbsoluteFilePath = saveImageLocally(bitmapImage);
/ * SCHRITT 2 - Geben Sie den nicht privaten absoluten Dateipfad für die Absicht der Freigabedatei frei * /
if (localAbsoluteFilePath!=null && localAbsoluteFilePath!="") { Intent shareIntent = new Intent(Intent.ACTION_SEND); Uri phototUri = Uri.parse(localAbsoluteFilePath); File file = new File(phototUri.getPath()); Log.d(TAG, "file path: " +file.getPath()); if(file.exists()) { // file create success } else { // file create fail } shareIntent.setData(phototUri); shareIntent.setType("image/png"); shareIntent.putExtra(Intent.EXTRA_STREAM, phototUri); activity.startActivityForResult(Intent.createChooser(shareIntent, "Share Via"), Navigator.REQUEST_SHARE_ACTION); }
/ * BILDFUNKTION SPEICHERN * /
private String saveImageLocally(Bitmap _bitmap) { File outputDir = Utils.getAlbumStorageDir(Environment.DIRECTORY_DOWNLOADS); File outputFile = null; try { outputFile = File.createTempFile("tmp", ".png", outputDir); } catch (IOException e1) { // handle exception } try { FileOutputStream out = new FileOutputStream(outputFile); _bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); out.close(); } catch (Exception e) { // handle exception } return outputFile.getAbsolutePath(); }
/ * SCHRITT 3 - Ergebnis der Absicht der Freigabedatei verarbeiten. Temporäre Datei usw. remote entfernen müssen. * /
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // deal with this with whatever constant you use. i have a navigator object to handle my navigation so it also holds all mys constants for intents if (requestCode== Navigator.REQUEST_SHARE_ACTION) { // delete temp file File file = new File (localAbsoluteFilePath); file.delete(); Toaster toast = new Toaster(activity); toast.popBurntToast("Successfully shared"); } }
Ich hoffe das hilft jemandem.
quelle
Ich war es leid, nach verschiedenen Optionen zu suchen, um Ansichten oder Bilder von meiner Anwendung für andere Anwendungen freizugeben. Und schließlich habe ich die Lösung.
Schritt 1: Intent Handling Block teilen. Daraufhin wird Ihr Fenster mit einer Liste der Anwendungen in Ihrem Telefon geöffnet
public void share_bitMap_to_Apps() { Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/*"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); /*compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] bytes = stream.toByteArray();*/ i.putExtra(Intent.EXTRA_STREAM, getImageUri(mContext, getBitmapFromView(relative_me_other))); try { startActivity(Intent.createChooser(i, "My Profile ...")); } catch (android.content.ActivityNotFoundException ex) { ex.printStackTrace(); } }
Schritt 2: Konvertieren Sie Ihre Ansicht in BItmap
public static Bitmap getBitmapFromView(View view) { //Define a bitmap with the same size as the view Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); //Bind a canvas to it Canvas canvas = new Canvas(returnedBitmap); //Get the view's background Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) //has background drawable, then draw it on the canvas bgDrawable.draw(canvas); else //does not have background drawable, then draw white background on the canvas canvas.drawColor(Color.WHITE); // draw the view on the canvas view.draw(canvas); //return the bitmap return returnedBitmap; }
Schritt 3 :
So rufen Sie den URI von Bitmap Image ab
public Uri getImageUri(Context inContext, Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); return Uri.parse(path); }
quelle
Ich hatte gerade das gleiche Problem.
Hier ist eine Antwort, bei der in Ihrem Hauptcode keine explizite Datei geschrieben wird (die API kümmert sich für Sie darum).
Drawable mDrawable = myImageView1.getDrawable(); Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap(); String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Image I want to share", null); Uri uri = Uri.parse(path); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, uri); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "Share Image"));
Dies ist der Pfad ... Sie müssen nur Ihre Bild-IDs in ein Drawable-Objekt einfügen. In meinem Fall (Code oben) wurde das Drawable aus einer ImageView extrahiert.
quelle
Die SuperM-Antwort hat bei mir funktioniert, aber mit Uri.fromFile () anstelle von Uri.parse ().
Mit Uri.parse () funktionierte es nur mit WhatsApp.
Das ist mein Code:
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(mFile));
Ausgabe von Uri.parse ():
/storage/emulated/0/Android/data/application_package/Files/17072015_0927.jpg
Ausgabe von Uri.fromFile:
file: ///storage/emulated/0/Android/data/application_package/Files/17072015_0927.jpg
quelle
Versuche dies,
Uri imageUri = Uri.parse("android.resource://your.package/drawable/fileName"); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/png"); intent.putExtra(Intent.EXTRA_STREAM, imageUri); startActivity(Intent.createChooser(intent , "Share"));
quelle
ref: - http://developer.android.com/training/sharing/send.html#send-multiple-content
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.."));
quelle
Eine perfekte Lösung für das Teilen von Text und Bild über Intent ist:
Klicken Sie auf der Schaltfläche "Teilen" auf:
Bitmap image; shareimagebutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { URL url = null; try { url = new URL("https://firebasestorage.googleapis.com/v0/b/fir-notificationdemo-dbefb.appspot.com/o/abc_text_select_handle_middle_mtrl_light.png?alt=media&token=c624ab1b-f840-479e-9e0d-6fe8142478e8"); image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); } catch (IOException e) { e.printStackTrace(); } shareBitmap(image); } });
Erstellen Sie dann die Methode shareBitmap (Bild).
private void shareBitmap(Bitmap bitmap) { final String shareText = getString(R.string.share_text) + " " + getString(R.string.app_name) + " developed by " + "https://play.google.com/store/apps/details?id=" + getPackageName() + ": \n\n"; try { File file = new File(this.getExternalCacheDir(), "share.png"); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); fOut.flush(); fOut.close(); file.setReadable(true, false); final Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Intent.EXTRA_TEXT, shareText); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType("image/png"); startActivity(Intent.createChooser(intent, "Share image via")); } catch (Exception e) { e.printStackTrace(); } }
Und dann einfach testen .. !!
quelle
Die gesamte oben genannte Lösung funktioniert bei mir
Android Api 26 & 27 (Oreo)
nichtError: exposed beyond app through ClipData.Item.getUri
. Die Lösung, die in meine Situation passt, warFileProvider.getUriForFile(Context,packagename,File)
alsvoid shareImage() { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/*"); intent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this,getPackageName(),deleteFilePath)); startActivity(Intent.createChooser(intent,"Share with...")); }
<provider>
in IhremManifest.xml
als<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.example.stickerapplication" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"> </meta-data> </provider>
resource
Datei für Ihre Direktoren zu definieren<paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="." /> </paths>
*Note this solution is for `external storage` `uri`
quelle
Vielen Dank an alle, ich habe die wenigen angegebenen Optionen ausprobiert, aber diese scheinen für die neuesten Android-Versionen nicht zu funktionieren. Fügen Sie daher die geänderten Schritte hinzu, die für die neuesten Android-Versionen funktionieren. Diese basieren auf einigen der obigen Antworten, jedoch mit Änderungen. Die Lösung basiert auf der Verwendung des Dateianbieters:
Schritt 1
Fügen Sie folgenden Code in die Manifest-Datei ein:
<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" /> </provider>
Schritt: 2 Erstellen Sie eine XML-Datei in res> xml
Erstellen Sie die Datei file_provider_paths in XML.
Beachten Sie, dass dies die Datei ist, die wir im vorherigen Schritt in die android: resource aufgenommen haben.
Schreiben Sie folgende Codes in die file_provider_paths:
<?xml version="1.0" encoding="utf-8"?> <paths> <cache-path name="cache" path="/" /> <files-path name="files" path="/" /> </paths>
Schritt 3
Gehen Sie danach zu Ihrer Schaltfläche. Klicken Sie auf:
Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bit = BitmapFactory.decodeResource(context.getResources(), R.drawable.filename); File filesDir = context.getApplicationContext().getFilesDir(); File imageFile = new File(filesDir, "birds.png"); OutputStream os; try { os = new FileOutputStream(imageFile); bit.compress(Bitmap.CompressFormat.PNG, 100, os); os.flush(); os.close(); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Error writing bitmap", e); } Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri imageUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, imageFile); intent.putExtra(Intent.EXTRA_STREAM, imageUri); intent.setType("image/*"); context.startActivity(intent); } });
Weitere Informationen finden Sie unter https://droidlytics.wordpress.com/2020/08/04/use-fileprovider-to-share-image-from-recyclerview/
quelle
Bei der Implementierung strengerer Sicherheitsrichtlinien führt das Offenlegen von uri außerhalb der App zu einem Fehler und zum Absturz der Anwendung.
In der Antwort von @Ali Tamoor wird die Verwendung von Dateianbietern erläutert. Dies ist der empfohlene Weg.
Weitere Informationen finden Sie unter https://developer.android.com/training/secure-file-sharing/setup-sharing
Außerdem müssen Sie die Androidx-Kernbibliothek in Ihr Projekt aufnehmen.
implementation "androidx.core:core:1.2.0"
Natürlich ist diese Bibliothek etwas sperrig und wird nur zum Teilen von Dateien benötigt. Wenn es einen besseren Weg gibt, lassen Sie es mich bitte wissen.
quelle
Strring temp="facebook",temp="whatsapp",temp="instagram",temp="googleplus",temp="share"; if(temp.equals("facebook")) { Intent intent = getPackageManager().getLaunchIntentForPackage("com.facebook.katana"); if (intent != null) { Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("image/png"); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + "/sdcard/folder name/abc.png")); shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setPackage("com.facebook.katana"); startActivity(shareIntent); } else { Toast.makeText(MainActivity.this, "Facebook require..!!", Toast.LENGTH_SHORT).show(); } } if(temp.equals("whatsapp")) { try { File filePath = new File("/sdcard/folder name/abc.png"); final ComponentName name = new ComponentName("com.whatsapp", "com.whatsapp.ContactPicker"); Intent oShareIntent = new Intent(); oShareIntent.setComponent(name); oShareIntent.setType("text/plain"); oShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Website : www.google.com"); oShareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(filePath)); oShareIntent.setType("image/jpeg"); oShareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); MainActivity.this.startActivity(oShareIntent); } catch (Exception e) { Toast.makeText(MainActivity.this, "WhatsApp require..!!", Toast.LENGTH_SHORT).show(); } } if(temp.equals("instagram")) { Intent intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android"); if (intent != null) { File filePath =new File("/sdcard/folder name/"abc.png"); Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("image"); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + "/sdcard/Chitranagari/abc.png")); shareIntent.setPackage("com.instagram.android"); startActivity(shareIntent); } else { Toast.makeText(MainActivity.this, "Instagram require..!!", Toast.LENGTH_SHORT).show(); } } if(temp.equals("googleplus")) { try { Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"); String strDate = sdf.format(c.getTime()); Intent shareIntent = ShareCompat.IntentBuilder.from(MainActivity.this).getIntent(); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, "Website : www.google.com"); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + "/sdcard/folder name/abc.png")); shareIntent.setPackage("com.google.android.apps.plus"); shareIntent.setAction(Intent.ACTION_SEND); startActivity(shareIntent); }catch (Exception e) { e.printStackTrace(); Toast.makeText(MainActivity.this, "Googleplus require..!!", Toast.LENGTH_SHORT).show(); } } if(temp.equals("share")) { File filePath =new File("/sdcard/folder name/abc.png"); //optional //internal storage Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, "Website : www.google.com"); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(filePath)); //optional//use this when you want to send an image shareIntent.setType("image/jpeg"); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivity(Intent.createChooser(shareIntent, "send")); }
quelle