为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用默认的关联程序打开文件

如何使用默认的关联程序打开文件

繁华开满天机 2019-10-19 14:38:29
如何使用Java中的默认关联程序打开文件?(例如电影文件)
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

您可以使用Desktop.getDesktop().open(File file)。有关其他选项,请参见以下问题:“ [Java]如何为给定文件打开用户系统优先编辑器? ”


查看完整回答
反对 回复 2019-10-19
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

SwingHacks提供了针对Java较早版本的解决方案。


我认为他们使用Runtime对象在Windows上执行“开始”命令,而在Mac上也有类似的命令。


查看完整回答
反对 回复 2019-10-19
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

干得好:


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);

    }

}


查看完整回答
反对 回复 2019-10-19
  • 3 回答
  • 0 关注
  • 573 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信