2009-02-15 115 views

回答

110

您可以使用Desktop.getDesktop().open(File file)。有关其他选项,请参阅以下问题:“[Java] How to open user system preffered editor for given file?

+1

我不断收到此异常电影文件尝试,但它有一个图像文件工作的时候(BMP) : java.io.IOException:无法打开文件:/ D:/vidz/2006-04-02.wmv。错误消息:该参数不正确。 – 2009-02-15 19:30:53

+0

你可以在问题中提供你的代码吗?另外,您使用的是哪个操作系统和Java版本? – 2009-02-15 19:36:06

0

SwingHacks有一个适用于旧版Java的解决方案。

我认为他们使用Runtime对象在Windows上执行'start'命令,并且在mac上有类似的命令。

-4

在这里你去:

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

包内创建一个不同的类:

// 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); 
    } 
} 
相关问题