2010-06-01 9 views
6

Ich habe die URL eines Bildes. Was ich tun muss, ist den Standard-Bildbetrachter für Bilder mit einer Absicht zu starten.Launch Intent Viewer zum Anzeigen von Bild von URL

Ich versuchte es mit Hilfe Start:

Uri uri = Uri.parse("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png"); 
Intent it = new Intent(Intent.ACTION_VIEW); 
it.setDataAndType(uri, "image/*") 
startActivity(it); 

Aber es funktioniert nicht. Wenn ich den Datentyp nicht angeben, startet der Intent den Browser, da die Daten eine URL sind. Es funktioniert grundsätzlich (da Sie das Bild im Browser sehen können), aber was ich möchte, ist, dass die Galerie das Bild für mich anzeigt.

Ich kann auch das Bild in eine Bitmap herunterladen, aber ich würde immer noch nicht wissen, wie die Bitmap mit der Galerie angezeigt wird (wenn das überhaupt möglich ist). Irgendwelche Ideen?

EDIT: Ich habe versucht, die Bitmap in den Cache speichern und starten Sie den Viewer für diese Datei, aber es funktioniert nicht. Kannst du Fehler in meinem Code erkennen? (Die Utilities-Klasse ist eine Klasse i schrieb Verfahren einfach die Bitmap erzeugt Es funktioniert, das ist nicht das Problem..)

File temp = File.createTempFile("tempImage", ".jpg", getContext().getCacheDir()); 
Bitmap bmp = Utilities.loadBitmap(largeUrl.toString()); 
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(temp)); 
bmp.compress(Bitmap.CompressFormat.JPEG, 90, out); 
out.close(); 
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(temp), "image/jpg"); 
((Activity) getContext()).startActivity(intent); 

EDIT 2: Ich beschloss, dass ich nach all so die heruntergeladenen Bilder benötigen i beschlossen, sie zuerst auf der SD-Karte zu speichern. Das hat andere Probleme verursacht. Ich fragte eine new question dafür, da es ein anderes Problem ist.

Antwort

1

Möglicherweise erfordert die Galerie, dass das Bild im Speicher gespeichert wird.

Warum nicht das Bild in eine Bitmap herunterladen und dann als Datei speichern und dann die Bildvorgabe für diese Datei starten?

(Wenn Sie danach bleiben, um die Datei nicht möchten, können Sie es einfach in der App-Datenverzeichnis speichern)

+1

Ich mag wäre in der Lage sein, es zu tun, ohne Material sparend, aber ich versuchte, es und es funktioniert nicht. Kannst du mir bitte meine bearbeitete Frage ansehen und Fehler erkennen? –

+0

Zwei Kommentare: (1) Sie legen SetDataAndType für die temporäre Datei fest, bevor sie ausgegeben wurde. Warum nicht die gespeicherte Datei abrufen und diese dann zur Absicht hinzufügen? (2) Wenn Sie sagen "es funktioniert nicht", was ist das Ergebnis oder die Ausnahme? – HXCaine

+0

was meinst du bevor es ausgegeben wurde? Ich komprimiere die Bitmap, schließe den Ausgabestrom und erstelle dann die Absicht ... –

1

Der Code ist in Ordnung, aber Sie müssen das Bild auf der SD-Karte speichern (“ Temp "Datei" für den Foto-Viewer zu arbeiten. Getestet auf 1.5, 1.6, 2.1.

0

können Sie versuchen, diesen Code für gridview onItemClickListner in Standard-Galerie zu zeigen App

OnItemClickListener myOnItemClickListener = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 

     Intent it = new Intent(Intent.ACTION_VIEW); 
     it.setDataAndType(Uri.parse("file://" + (String) parent.getItemAtPosition(position)), "image/*"); 
     startActivity(it); 
    } 
}; 

das ist Arbeit für mich :)