2014-09-26 3 views
19

ich mache eine Anwendung, die Benutzer erlauben, ein Bild mit android Absicht zu teilen, aber, wie man das uri vonist da weg um uri von bitmap ohne out zu erhalten save es auf sdcard?

mit aus

eine Bitmap erhalten müssen, es speichern ich sdcard

ich diesen Code verwendet haben, die funktioniert gut aber ich brauche nicht diese Bitmap speichern

sdcard
private Uri getImageUri(Context inContext, Bitmap inImage) { 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "title", null); 
      return Uri.parse(path); 
    } 

ich brauche speichern, dass Bitmap dass uri mit raus sdcard

+0

Sie bedeuten "Sie wollen die Uri von In-Memory-Bitmap erhalten" ?? –

+0

@Sagar Pilkhwal Ich möchte die uri von Bitmap zu teilen, aber ich brauche es nicht zu internen oder externen Speicher zu speichern ... ist das möglich? –

+0

Nein, es ist nicht möglich, müssen Sie die Datei auf der SD-Karte speichern und dann teilen und löschen Sie dann die Datei –

Antwort

17

Versuchen Sie folgendes:

protected void ShareImage(Intent intent) { 
    try { 
     URL url = new URL(mImageUrl); 
     Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
     intent.putExtra(Intent.EXTRA_STREAM, getImageUri(mActivity, image)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    startActivityForResult(Intent.createChooser(intent, 1001)); 
} 

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); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    //check for result is OK and then check for your requestCode(1001) and then delete the file 

} 
+1

ja, das ist, was ich brauche danke ... ich weiß nicht, warum diese Methode aus meinem Kopf geht: D .. danke nochmal. –

+1

Jetzt werden Sie sich daran erinnern, dass es fortan ... :) –

+0

yeah danke :) –

1

Versuchen Sie, diese Art und Weise

protected void tryToShareImage(Intent intent) { 
    try { 
     URL url = new URL(mImageUrl); 
     Bitmap image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
     intent.putExtra(Intent.EXTRA_STREAM, getImageUri(mActivity, image)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    startActivity(Intent.createChooser(intent, "Share using...")); 
} 

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); 
} 

nach, dass Sie Dateien löschen können mit File.delete()

+0

, wenn ich diese Datei löschen kann ich nicht wissen, wann der Benutzer wählen kann, zu teilen, wenn ich die Datei nach dem Start löschen die URI nicht gefunden –

+1

Wenn Datei erfolgreich hochgeladen, dann können Sie Datei löschen. Wenn Sie AsyncTask verwenden, können Sie in onPostExecute löschen. – Derek

Verwandte Themen