打开不同文件的Intent

1、在values目录下定义后缀数组文件fileendings 

<?xml version="1.0" encoding="utf-8"?>

<resources>

<array name="fileEndingImage">

        <item>.png</item>

        <item>.gif</item>

        <item>.jpg</item>

        <item>.jpeg</item>

        <item>.bmp</item>

    </array>

<array name="fileEndingAudio">

        <item>.mp3</item>

        <item>.wav</item>

        <item>.ogg</item>

        <item>.midi</item>

    </array>

<array name="fileEndingVideo">

        <item>.mp4</item>

        <item>.rmvb</item>

        <item>.avi</item>

        <item>.flv</item>

    </array>

<array name="fileEndingPackage">

        <item>.jar</item>

        <item>.zip</item>

        <item>.rar</item>

        <item>.gz</item>

        <item>.apk</item>

        <item>.img</item>

    </array>

<array name="fileEndingWebText">

        <item>.htm</item>

        <item>.html</item>

        <item>.php</item>

        <item>.jsp</item>

    </array>

<array name="fileEndingText">

        <item>.txt</item>

        <item>.java</item>

        <item>.c</item>

        <item>.cpp</item>

        <item>.py</item>

        <item>.xml</item>

        <item>.json</item>

        <item>.log</item>

    </array>

<array name="fileEndingWord">

    <item>.doc</item>

    <item>.docx</item>

</array>

<array name="fileEndingExcel">

    <item>.xls</item>

    <item>.xlsx</item>

</array>

<array name="fileEndingPPT">

    <item>.ppt</item>

    <item>.pptx</item>

</array>

 

<array name="fileEndingPdf">

    <item>.pdf</item>

</array>

</resources>

 

 

 

2、定义OpenFiles工具类,只需传输File参数即可,然后通过返回的Intent打开文件

 

 

public class OpenFiles {

     //android获取一个用于打开HTML文件的intent

       public static Intent getHtmlFileIntent(File file)

       {

           Uri uri = Uri.parse(file.toString()).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(file.toString()).build();

           Intent intent = new Intent("android.intent.action.VIEW");

           intent.setDataAndType(uri, "text/html");

           return intent;

       }

     //android获取一个用于打开图片文件的intent

       public static Intent getImageFileIntent(File file)

       {

           Intent intent = new Intent("android.intent.action.VIEW");

           intent.addCategory("android.intent.category.DEFAULT");

           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

           Uri uri = Uri.fromFile(file);

           intent.setDataAndType(uri, "image/*");

           return intent;

       }

       //android获取一个用于打开PDF文件的intent

       public static Intent getPdfFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.DEFAULT");

         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "application/pdf");

         return intent;

       }

     //android获取一个用于打开文本文件的intent

     public static Intent getTextFileIntent(File file)

     {    

       Intent intent = new Intent("android.intent.action.VIEW");

       intent.addCategory("android.intent.category.DEFAULT");

       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

       Uri uri = Uri.fromFile(file);

       intent.setDataAndType(uri, "text/plain");

       return intent;

     }

    

     //android获取一个用于打开音频文件的intent

       public static Intent getAudioFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

         intent.putExtra("oneshot", 0);

         intent.putExtra("configchange", 0);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "audio/*");

         return intent;

       }

       //android获取一个用于打开视频文件的intent

       public static Intent getVideoFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

         intent.putExtra("oneshot", 0);

         intent.putExtra("configchange", 0);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "video/*");

         return intent;

       }

    

    

       //android获取一个用于打开CHM文件的intent

       public static Intent getChmFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.DEFAULT");

         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "application/x-chm");

         return intent;

       }

    

    

     //android获取一个用于打开Word文件的intent

       public static Intent getWordFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.DEFAULT");

         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "application/msword");

         return intent;

       }

     //android获取一个用于打开Excel文件的intent

       public static Intent getExcelFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.DEFAULT");

         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "application/vnd.ms-excel");

         return intent;

       }

     //android获取一个用于打开PPT文件的intent

       public static Intent getPPTFileIntent(File file)

       {

         Intent intent = new Intent("android.intent.action.VIEW");

         intent.addCategory("android.intent.category.DEFAULT");

         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

         Uri uri = Uri.fromFile(file);

         intent.setDataAndType(uri, "application/vnd.ms-powerpoint");

         return intent;

       }

       //android获取一个用于打开apk文件的intent

       public static Intent getApkFileIntent(File file)

       {

           Intent intent = new Intent();  

           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  

           intent.setAction(android.content.Intent.ACTION_VIEW);  

           intent.setDataAndType(Uri.fromFile(file),  "application/vnd.android.package-archive");  

           return intent;

       }

       

       

}

 

 

 

 

 

3、定义用于检查要打开的文件的后缀是否在遍历后缀数组中

 

 

    private boolean checkEndsWithInStringArray(String checkItsEnd, 

                    String[] fileEndings){

        for(String aEnd : fileEndings){

            if(checkItsEnd.endsWith(aEnd))

                return true;

        }

        return false;

    }

 

 

 

4、通过调用OpenFiles类返回的Intent,打开相应的文件

 

 

if(currentPath!=null&&currentPath.isFile())

                {

                    String fileName = currentPath.toString();

                    Intent intent;

                    if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingImage))){

                        intent = OpenFiles.getImageFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingWebText))){

                        intent = OpenFiles.getHtmlFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingPackage))){

                        intent = OpenFiles.getApkFileIntent(currentPath);

                        startActivity(intent);

 

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingAudio))){

                        intent = OpenFiles.getAudioFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingVideo))){

                        intent = OpenFiles.getVideoFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingText))){

                        intent = OpenFiles.getTextFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingPdf))){

                        intent = OpenFiles.getPdfFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingWord))){

                        intent = OpenFiles.getWordFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingExcel))){

                        intent = OpenFiles.getExcelFileIntent(currentPath);

                        startActivity(intent);

                    }else if(checkEndsWithInStringArray(fileName, getResources().

                            getStringArray(R.array.fileEndingPPT))){

                        intent = OpenFiles.getPPTFileIntent(currentPath);

                        startActivity(intent);

                    }else

                    {

                        showMessage("无法打开,请安装相应的软件!");

                    }

                }else

                {

                    showMessage("对不起,这不是文件!");

                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值