2017-02-26 6 views
0

In meiner App muss ich ein Bild von der URL herunterladen. Ich muss dieses Bild in meiner App anzeigen und das Bild mit expliziter Absicht teilen. Ich habe zwei Fragen konfrontiert wie folgt:Bild anzeigen und mit anderen Apps in Android teilen

  1. Ich mag nicht das Bild im externen Speicher speichern. Was sind die anderen Optionen als geteilte Präferenzen? (Da die gemeinsame Voreinstellung sehr langsam ist, um das Bild zu dekodieren und zu kodieren). Ist Caching gut? Wenn es gut ist, wie kann ich es erreichen?

  2. Bitmaps können nicht ausdrücklich über andere Absichten an andere Apps gesendet werden (ich spreche über die Freigabe von Bildfunktionen in meiner App). Was sind die anderen möglichen Optionen dafür?

Antwort

1
  1. Bild herunterladen und speichern Sie es in Ihrem Cache-Verzeichnis

    URL url = new URL("YOUR_URL"); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.setDoInput(true); 
    connection.connect(); 
    InputStream input = connection.getInputStream(); Bitmap myBitmap = BitmapFactory.decodeStream(input); 
    String data1 = String.valueOf(String.format("/sdcard/dirname/%d.jpg",System.currentTimeMillis())); FileOutputStream stream = new FileOutputStream(data1); 
    ByteArrayOutputStream outstream = new ByteArrayOutputStream(); myBitmap.compress(Bitmap.CompressFormat.JPEG, 85, outstream); 
    byte[] byteArray = outstream.toByteArray(); stream.write(byteArray); 
    stream.close(); 
    
  2. Sie lokal Dateipfad URL gespeichert müssen über Anwendungen zu teilen.

    Absicht intent = neue Absicht (Intent.ACTION_SEND); intent.setData (Uri.parse (Dateipfad)); startActivity (Absicht);

+0

Benötigt dies eine ausdrückliche Genehmigung? –

+0

Keine Berechtigung erforderlich, um es lokal zu speichern. Sie müssen jedoch möglicherweise den FileProvider-Dateipfad verwenden, während Sie Ihr Bild in Android 6.0 und höher teilen. Wenn Sie die Antwort mögen, stimmen Sie ab. – albeee

+0

Ihre App muss dem Bildempfänger auch Leseberechtigung für die heruntergeladene Datei gewähren: 'intent.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION);' – k3b

Verwandte Themen