Android调用系统应用打开任意文件

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

    public static boolean checkEndsWithInStringArray(String checkItsEnd,
                                               String[] fileEndings){
        for(String aEnd : fileEndings){
            if(checkItsEnd.endsWith(aEnd))
                return true;
        }
        return false;
    }

    public static void openFile(File currentPath){
        if(currentPath!=null&¤tPath.isFile()){
            String fileName = currentPath.toString();
            Intent intent;
            if(checkEndsWithInStringArray(fileName, BaseApp.getContext().getResources().
                    getStringArray(R.array.imageFile))){
                intent = OpenFiles.getImageFileIntent(currentPath);
                BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.htmlFile))){
                intent = OpenFiles.getHtmlFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.packageFile))){
                intent = OpenFiles.getApkFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);

            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.audioFile))){
                intent = OpenFiles.getAudioFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.videoFile))){
                intent = OpenFiles.getVideoFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.textFile))){
                intent = OpenFiles.getTextFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.pdfFile))){
                intent = OpenFiles.getPdfFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.wordFile))){
                intent = OpenFiles.getWordFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.excelFile))){
                intent = OpenFiles.getExcelFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else if(checkEndsWithInStringArray(fileName,BaseApp.getContext().getResources().
                    getStringArray(R.array.pptFile))){
                intent = OpenFiles.getPPTFileIntent(currentPath);
               BaseApp.getContext().startActivity(intent);
            }else
            {
                TSLog.e("无法打开,请安装相应的软件!");
            }
        }else{
            TSLog.e("对不起,这不是文件!");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值