2012-11-25 9 views
6

Używam tego zamiaru pozwolić użytkownikowi wybrać zdjęcie:`getContentResolver() openInputStream (URI)` rzuca FileNotFoundException

Intent intent = new Intent(Intent.ACTION_PICK, 
          MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
startActivityForResult(intent, INTENT_SELECT_PHOTO); 

aw onActivityResult:

Uri uri = data.getData(); 
InputStream inputStream = getContentResolver().openInputStream(uri); 

Ale to rzuca FileNotFoundException na niektóre urządzenia z Androidem.

Wartość uri:

content://media/external/images/media/26467 

Wyjątek rzucony:

java.io.FileNotFoundException: No such file or directory 

I to jest bardzo dziwne, że nie rzuci tego wyjątku w niektórych innych urządzeń z systemem Android. Co spowoduje ten błąd i jak go naprawić?

Odpowiedz

2
MediaStore.Images.Media.INTERNAL_CONTENT_URI 

dla obrazów na urządzeniu lokalnym lub

MediaStore.Images.Media.EXTERNAL_CONTENT_URI 

dla obrazów na karcie SD.

Czy jesteś pewien, że adresujesz oba poprawnie? Leczenie wewnętrzne/zewnętrzne różni się w zależności od urządzenia, może dlatego działa na niektórych, ale nie na innych.

+3

Właśnie znalazłem to, ponieważ rzeczywiste obrazy zostały usunięte, ale mają pamięć podręczną w aplikacji przeglądarki zdjęć. – Freewind

+0

Dobrze wiedzieć, szukając problemu natknąłem się na coś, co wyjaśnia pokrewny problem http://code.google.com/p/android/issues/detail?id=12508 – Shakti

+0

Prawo Freewind, miałem dokładnie to przeglądanie kodu/błędu mój folder pobierania pliku .txt i tam gdzie pliki do pobrania i oba były o tej samej wielkości, jeden pracował jeden nie. Dzięki! – tom

1

Mam ten sam problem, ale rozwiązałem go za pomocą metody setImageURI ImageView.

Nie musisz użyć następującego kodu:

InputStream inputStream = getContentResolver().openInputStream(uri); 

prostu użyć następujących funkcji:

imageViewCustomer.setImageURI(data.getData()); 
-1

Zastosowanie Context.getContentResolver() openInputStream (URI).