Continuo recebendo essa exceção ao tentar com um arquivo de filme, mas funciona com um arquivo de imagem (bmp): java.io.IOException: Falha ao abrir o arquivo: / D: /vidz/2006-04-02.wmv. Mensagem de erro: O parâmetro está incorreto.
Frederic Morin de
Você pode fornecer seu código na pergunta? Além disso, qual versão do sistema operacional e do Java você está usando?
Zach Scrivena
o que não entendo é que funciona com imagens ... de qualquer forma, estou usando Java 1.6.0.06 e aqui está o código: File file = new File (MoviePlay.getInstance (). getBasePath (), movieFile.getPath () ); tente {Desktop.getDesktop (). open (arquivo); } catch (ex) {...}
Frederic Morin
5
Eu sei que já faz muito tempo, mas ... o problema era minha máquina. O assiciation do programa padrão no meu Windows XP não está ok e estou tendo problemas em outros programas. Tentei com outras máquinas desde então e este método funciona muito bem! Aceitaram !
Frederic Morin,
7
Adicionando a esta velha resposta; .edit()também pode ser usado se o propósito da abertura for para edição. Alguns sistemas possuem diferentes aplicativos padrão para visualização e edição; .open()irá abrir o visualizador.
Jason C
0
SwingHacks tem uma solução para versões anteriores do Java.
Acho que eles usaram o objeto Runtime para executar o comando 'start' no windows e há um comando semelhante no mac.
File myFile = new File("your any type of file url");
FileOpen.openFile(mContext, myFile);
Crie uma classe diferente dentro do pacote:
// code to open default application present in the handsetpublicclassFileOpen{
publicstaticvoidopenFile(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 fileif (url.toString().contains(".doc") || url.toString().contains(".docx")) {
// Word document
intent.setDataAndType(uri, "application/msword");
} elseif(url.toString().contains(".pdf")) {
// PDF file
intent.setDataAndType(uri, "application/pdf");
} elseif(url.toString().contains(".ppt") || url.toString().contains(".pptx")) {
// Powerpoint file
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
} elseif(url.toString().contains(".xls") || url.toString().contains(".xlsx")) {
// Excel file
intent.setDataAndType(uri, "application/vnd.ms-excel");
} elseif(url.toString().contains(".zip") || url.toString().contains(".rar")) {
// WAV audio file
intent.setDataAndType(uri, "application/x-wav");
} elseif(url.toString().contains(".rtf")) {
// RTF file
intent.setDataAndType(uri, "application/rtf");
} elseif(url.toString().contains(".wav") || url.toString().contains(".mp3")) {
// WAV audio file
intent.setDataAndType(uri, "audio/x-wav");
} elseif(url.toString().contains(".gif")) {
// GIF file
intent.setDataAndType(uri, "image/gif");
} elseif(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) {
// JPG file
intent.setDataAndType(uri, "image/jpeg");
} elseif(url.toString().contains(".txt")) {
// Text file
intent.setDataAndType(uri, "text/plain");
} elseif(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);
}
}
JavaFX
vá aqui ou aqui .Respostas:
Você pode usar
Desktop.getDesktop().open(File file)
. Consulte a seguinte pergunta para outras opções: " [Java] Como abrir o editor preferido do sistema do usuário para determinado arquivo? "fonte
.edit()
também pode ser usado se o propósito da abertura for para edição. Alguns sistemas possuem diferentes aplicativos padrão para visualização e edição;.open()
irá abrir o visualizador.SwingHacks tem uma solução para versões anteriores do Java.
Acho que eles usaram o objeto Runtime para executar o comando 'start' no windows e há um comando semelhante no mac.
fonte
Aqui está:
File myFile = new File("your any type of file url"); FileOpen.openFile(mContext, myFile);
Crie uma classe diferente dentro do pacote:
// 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); } }
fonte