2014-09-26 4 views
19

Faccio un app che permette all'utente di condividere un'immagine utilizzando intento Android, ma come ottenere che URIè lì per ottenere uri di bitmap senza salvarlo su sdcard?

una bitmap con fuori necessità di salvarlo sdcard i

Ho usato questo codice che funziona bene ma io non bisogno di salvare questa bitmap a 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); 
    } 

ho bisogno di ottenere che uri con fuori Salva che bitmap da sdcard

+0

vuoi dire "Si desidera ottenere l'Uri di In-Memory Bitmap" ?? –

+0

@Sagar Pilkhwal voglio ottenere l'uri di bitmap per condividerlo ma non ho bisogno di salvarlo nell'archivio interno o esterno ... è possibile? –

+0

Non è possibile, è necessario salvare il file sulla scheda SD e quindi condividerlo e quindi eliminare il file –

risposta

17

Prova questa:

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

sì, questo è ciò di cui ho bisogno grazie ... non so perché questo metodo vada dalla mia mente: D .. grazie ancora. –

+1

Ora lo ricorderai da subito ... :) –

+0

sì grazie :) –

1

provare in questo modo

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

dopo che è possibile eliminare i file usando File.delete()

+0

quando posso cancellare questo file non so quando l'utente può scegliere di condividere se cancello il file dopo l'intento iniziale il uri non trovato –

+1

Quando il file caricato con successo, allora è possibile eliminare il file. Se si utilizza AsyncTask, in onPostExecute è possibile eliminare. – Derek

Problemi correlati