2009-02-15 10 views

Odpowiedz

110

Możesz użyć Desktop.getDesktop().open(File file). Zobacz następujące pytanie dotyczące innych opcji: "[Java] How to open user system preffered editor for given file?"

+1

wciąż otrzymuję ten wyjątek podczas próby z pliku filmowego, ale pracować z pliku obrazu (BMP) : java.io.IOException: nie powiodło się otwarcie pliku:/D: /vidz/2006-04-02.wmv. Komunikat o błędzie: Parametr jest niepoprawny. –

+0

Czy możesz podać swój kod w pytaniu? Z której wersji systemu operacyjnego i Java korzystasz? –

+0

czego nie rozumiem, to że działa z obrazami ... w każdym razie używam Java 1.6.0.06 i oto kod: Plik file = nowy Plik (MoviePlay.getInstance(). GetBasePath(), movieFile.getPath ()); wypróbuj {Desktop.getDesktop(). Open (plik); } catch (ex) {...} –

0

SwingHacks ma rozwiązanie dla starszych wersji Java.

Myślę, że użyli obiektu Runtime do wykonania polecenia "start" w systemie Windows i istnieje podobne polecenie na komputerze Mac.

-4

Proszę bardzo:

File myFile = new File("your any type of file url"); 
FileOpen.openFile(mContext, myFile); 

Tworzenie inną klasę w opakowaniu:

// code to open default application present in the handset 


public class FileOpen { 

    public static void openFile(Context context, File url) throws IOException { 
     // Create URI 
     File file=url; 
     Uri uri = Uri.fromFile(file); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     // Check what kind of file you are trying to open, by comparing the url with extensions. 
     // When the if condition is matched, plugin sets the correct intent (mime) type, 
     // so Android knew what application to use to open the file 
     if (url.toString().contains(".doc") || url.toString().contains(".docx")) { 
      // Word document 
      intent.setDataAndType(uri, "application/msword"); 
     } else if(url.toString().contains(".pdf")) { 
      // PDF file 
      intent.setDataAndType(uri, "application/pdf"); 
     } else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) { 
      // Powerpoint file 
      intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); 
     } else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) { 
      // Excel file 
      intent.setDataAndType(uri, "application/vnd.ms-excel"); 
     } else if(url.toString().contains(".zip") || url.toString().contains(".rar")) { 
      // WAV audio file 
      intent.setDataAndType(uri, "application/x-wav"); 
     } else if(url.toString().contains(".rtf")) { 
      // RTF file 
      intent.setDataAndType(uri, "application/rtf"); 
     } else if(url.toString().contains(".wav") || url.toString().contains(".mp3")) { 
      // WAV audio file 
      intent.setDataAndType(uri, "audio/x-wav"); 
     } else if(url.toString().contains(".gif")) { 
      // GIF file 
      intent.setDataAndType(uri, "image/gif"); 
     } else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) { 
      // JPG file 
      intent.setDataAndType(uri, "image/jpeg"); 
     } else if(url.toString().contains(".txt")) { 
      // Text file 
      intent.setDataAndType(uri, "text/plain"); 
     } else if(url.toString().contains(".3gp") || url.toString().contains(".mpg") || url.toString().contains(".mpeg") || url.toString().contains(".mpe") || url.toString().contains(".mp4") || url.toString().contains(".avi")) { 
      // Video files 
      intent.setDataAndType(uri, "video/*"); 
     } else { 
      //if you want you can also define the intent type for any other file 

      //additionally use else clause below, to manage other unknown extensions 
      //in this case, Android will show all applications installed on the device 
      //so you can choose which application to use 
      intent.setDataAndType(uri, "*/*"); 
     } 

     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 
    } 
} 
+0

lub możesz zmienić warunek ** if ** taki jak ten –

+0

, jeśli (url.getPath(). EndsWith (".jpg") || url.getPath(). EndsWith (".jpeg") || url.getPath() .endsWith (". png")) { intent.setDataAndType (uri, "image/*"); } –

+1

To działa tylko na Androida. To nie jest rozwiązanie dla wszystkich platform. – andred