Wie öffne ich eine Datei mit dem standardmäßig zugeordneten Programm in Java? (z. B. eine Filmdatei)So öffnen Sie eine Datei mit dem standardmäßig zugeordneten Programm
Antwort
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?"
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.
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);
}
}
oder Sie können die ** if ** Bedingung wie diese ändern –
if (url.getPath(). EndsWith (". Jpg") || url.getPath(). EndsWith (". Jpeg") || url.getPath() .endsWith (". png")) { intention.setDataAndType (uri, "image/*"); } –
Dies funktioniert nur unter Android. Es ist keine Lösung für alle Plattformen. – andred
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. –
Können Sie Ihren Code in der Frage angeben? Welche Betriebssystem- und Java-Version verwenden Sie? –
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) {...} –