2009-02-15 4 views

Antwort

110

Sie können Desktop.getDesktop().open(File file) verwenden. Siehe die folgende Frage für andere Optionen: "[Java] How to open user system preffered editor for given file?"

+1

Ich erhalte diese Ausnahme, wenn sie mit einer Filmdatei versucht, aber es mit einer Bilddatei (bmp) arbeiten : java.io.IOException: Fehler beim Öffnen der Datei:/D: /vidz/2006-04-02.wmv. Fehlermeldung: Der Parameter ist falsch. –

+0

Können Sie Ihren Code in der Frage angeben? Welche Betriebssystem- und Java-Version verwenden Sie? –

+0

was ich nicht verstehe ist, dass es mit Bildern funktioniert ... ich verwende sowieso Java 1.6.0.06 und hier ist der Code: Datei file = new File (MoviePlay.getInstance(). GetBasePath(), movieFile.getPath ()); try {Desktop.getDesktop(). Öffnen (Datei); } catch (ex) {...} –

0

SwingHacks hat eine Lösung für ältere Java-Versionen.

Ich denke, dass sie das Runtime-Objekt verwendet, um den Befehl "Start" auf Windows auszuführen, und es gibt einen ähnlichen Befehl auf dem Mac.

-4

Hier gehen Sie:

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

Erstellen Sie eine andere Klasse im Paket:

// 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

oder Sie können die ** if ** Bedingung wie diese ändern –

+0

if (url.getPath(). EndsWith (". Jpg") || url.getPath(). EndsWith (". Jpeg") || url.getPath() .endsWith (". png")) { intention.setDataAndType (uri, "image/*"); } –

+1

Dies funktioniert nur unter Android. Es ist keine Lösung für alle Plattformen. – andred