android查看手机是否安装了打开某类附件的第三方应有 并用其打开附件

来源:互联网 发布:mac永恒战士2无限钻石 编辑:程序博客网 时间:2024/06/05 03:59

移动开发中总要遇到一些各类附件的查看问题,ios可以通过系统的机制用浏览器打开,android我们可以通过安装第三方的应用打开附件(如用wps打开word excel等等)

现在我们来介绍一下android中的实现

查看所有能够打开某个附件的应用的方法

PackageManager pManager = this.getPackageManager();//this 是contextList list = pManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);

这个List就是获得 能够打开某类附件的应用的相关信息

可以看到这里面需一个intent 实现如下;

public class OnAttachmentOpenedActions {        public static Intent getAttachmentIntent(File file, String filetype){        filetype = filetype.toLowerCase();        if(filetype.equals("doc")||filetype.equals("docx")){            return getWordFileIntent(file) ;        }        else if(filetype.equals("pdf")){            return getPdfFileIntent(file) ;        }        else if(filetype.equals("image")){            return getImageFileIntent(file) ;        }        else if(filetype.equals("jpg")||filetype.equals("gif")||filetype.equals("png")||                filetype.equals("jpeg")||filetype.equals("bmp")){            return getImageFileIntent(file) ;        }        else if(filetype.equals("txt")){            return getTextFileIntent(file) ;        }        else if(filetype.equals("xls")||filetype.equals("xlsx")){            return getExcelFileIntent(file) ;        }        else if(filetype.equals("ppt")||filetype.equals("pptx")){            return getPptFileIntent(file) ;        }        else if(filetype.equals("html")||filetype.equals("htm")){            return getHtmlFileIntent(file) ;        }        return getDefaultFileIntent(file);            }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;}public static Intent getHtmlFileIntent(String content) {Uri uri = Uri.parse(content).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(content).build();Intent intent = new Intent("android.intent.action.VIEW");intent.setDataAndType(uri, "text/html");return 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 uri2 = Uri.fromFile(file);intent.setDataAndType(uri2, "text/plain");return 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( String param ){               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(new File(param ));             intent.setDataAndType(uri, "application/pdf");             return intent;         }      public static Intent getPdfFileIntent(File file) {Uri path = Uri.fromFile(file);Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(path, "application/pdf");intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);return intent;}    //Android获取一个用于打开Excel文件的intent         public static Intent getExcelFileIntent( File file  ){        Uri path = Uri.fromFile(file);        Intent intent = new Intent("android.intent.action.VIEW");             intent.addCategory("android.intent.category.DEFAULT");             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);               intent.setDataAndType(path, "application/vnd.ms-excel");             return intent;         }         //Android获取一个用于打开PPT文件的intent         public static Intent getPptFileIntent(File file ){        Uri path = Uri.fromFile(file);        Intent intent = new Intent("android.intent.action.VIEW");             intent.addCategory("android.intent.category.DEFAULT");             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);              intent.setDataAndType(path, "application/vnd.ms-powerpoint");             return intent;         }         private 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;    }    public static Intent getDefaultFileIntent(File file) {Intent intent = new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri uri2 = Uri.fromFile(file);intent.setDataAndType(uri2, "");return intent;}}

这样就可以通过list的判断是否安装应用 打开就用startActivity(intent)就可以了。



0 0
原创粉丝点击