2012-04-21 14 views
5

Zajmuję się tworzeniem aplikacji eksploratora plików w systemie Android. Jak obsługiwać pliki z nieznanymi rozszerzeniami? Kiedy próbuję otworzyć taki plik, jego wyrzucanie ActivityNotFound wyjątek. Ale chcę, żeby system wyświetlił listę aplikacji, abyśmy mogli ręcznie wybrać aplikację, aby ją otworzyć. Czy ktoś może mi w tym pomóc?Android: Jak otworzyć nieznany typ pliku

Rozpoczynam działanie, aby otworzyć plik, wiążąc plik i jego rozszerzenie z intencją.

Intent intent = new Intent(Intent.ACTION_VIEW); 
MimeTypeMap mime = MimeTypeMap.getSingleton(); 
String ext = file.getName().substring(file.getName().lastIndexOf(".") + 1); 
String type = mime.getMimeTypeFromExtension(ext); 
intent.setDataAndType(Uri.fromFile(new File(file.toString())), type); 
try 
{ 
    startActivity(intent); 
} 
catch(Exception e){} 

Odpowiedz

4

ActivityNotFound jest generowany, gdy nie zarejestrowano żadnej aplikacji obsługującej określony typ pliku. Oznacza to, że lista aplikacji, które chcesz wyświetlić, będzie pusta.

Najbardziej odpowiednim sposobem radzenia sobie z tą sytuacją jest złapanie wyjątku ActivityNotFound i wyświetlenie tosty powiadamiającego użytkownika, że ​​nie ma odpowiednich aplikacji do otwarcia pliku.

Wszystkie przeglądarki internetowe działają w ten sposób.

+0

Menedżer Asus File (4.4) daje to generic „Otwórz jako” listy z czterema elementami reprezentującymi ogólne kategorie (tekst, obraz, audio, wideo). Wybranie jednej spowoduje wyświetlenie listy powiązanych aplikacji, które otwierają plik (podobnie jak Windows). – samosaris