2010-06-01 18 views
6

Mam adres URL obrazu. Muszę uruchomić domyślną przeglądarkę obrazów dla obrazów z intencją.Uruchom przeglądarkę intencji, aby wyświetlić obraz z adresu URL

Próbowałem uruchomienie go za pomocą:

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

Ale to nie działa. Jeśli nie określę rodzaju danych, intencja uruchomi przeglądarkę, ponieważ dane są adresem URL. Działa zasadniczo (ponieważ widzisz obraz w przeglądarce), ale chciałbym, aby galeria wyświetlała dla mnie obraz.

Mogę również pobrać obraz do bitmapy, ale nadal nie wiem, jak wyświetlić mapę bitową za pomocą galerii (jeśli to możliwe). Jakieś pomysły?

EDYCJA: Próbowałem zapisać mapę bitową w pamięci podręcznej, a następnie uruchomić przeglądarkę na tym pliku, ale nie działa. Czy zauważyłeś jakieś błędy na moim kodzie? (Klasa Utilities jest klasa I napisał metoda po prostu tworzy bitmapę To działa, to nie jest 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: Uznałem, że mogę potrzebować pobrane obrazy Wszakże tak ja postanowił najpierw zapisać je na karcie SD. To stworzyło inne problemy. Poprosiłem o to new question, ponieważ jest to inny problem.

Odpowiedz

1

Być może galeria wymaga, aby obraz został zapisany w pamięci.

Dlaczego nie pobrać obrazu do mapy bitowej, a następnie zapisać go jako plik, a następnie zwolnić obraz zamierzony dla tego pliku?

(Jeśli nie chcesz, aby plik trzymać się później, można po prostu zapisać go w katalogu danych aplikacji)

+1

Chciałbym móc to zrobić bez zapisywania rzeczy, ale próbowałem to i to nie działa. Czy możesz rzucić okiem na moje zredagowane pytanie i zauważyć jakieś błędy? –

+0

Dwie uwagi: (1) Ustawiasz parametr DataAndType na pliku tymczasowym, zanim zostanie wyprowadzony. Dlaczego nie pobrać zapisanego pliku, a następnie dodać go do intencji? (2) Kiedy mówisz "to nie działa", jaki jest wynik lub wyjątek? – HXCaine

+0

co masz na myśli, zanim został wydrukowany? kompresuję mapę bitową, zamykam strumień wyjściowy, a następnie tworzę intencję ... –

1

Kod jest w porządku, ale trzeba zapisać obraz na karcie SD (” temp "Plik", aby przeglądarka zdjęć działała. Testowany w wersjach 1.5, 1.6, 2.1.

0

Można spróbować tego kodu dla gridview onItemClickListner pokazać w domyślnej aplikacji galerii

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

to jest praca dla mnie :)

Powiązane problemy