exposed beyond app through Intent.getData() 

调用手机app打开不同文件是会遇到上面问题,这是android从××版本开始要求访问权限,并要求通过URI访问文件。

先在AndroidManifest.xml文件添加fileprovider

    //exported:要求必须为false,为true则会报安全异常。//grantUriPermissions:true,表示授予 URI 临时访问权限。

在res资源目录下新建一个xml目录放入file_paths.xml文件

<?xml version="1.0" encoding="utf-8"?>        
  • 代表的根目录: Context.getFilesDir()

  • 代表的根目录: Environment.getExternalStorageDirectory()

  • 代表的根目录: getCacheDir()

上面配置好了现在上代码打开文件,只有传入文件路径即可

import android.content.Context;import android.content.Intent;import android.net.Uri;import android.support.v4.content.FileProvider;import android.text.TextUtils;import android.util.Log;import java.io.File;import java.util.HashMap;import java.util.Map;public class MineType {    static String TAG = "MineType";    private static final String auther = "app包名.fileprovider";//与AndroidManifest.xml 保存一只    public static String getMIMETypeString(File file) {        String type = "*/*";        String strings[] = file.getPath().split("/");        String fName = strings[strings.length - 1];        //获取后缀名前的分隔符"."在fName中的位置。        int dotIndex = fName.lastIndexOf(".");        if (dotIndex < 0) {            return type;        }        dotIndex++;        /* 获取文件的后缀名 */        String end = fName.substring(dotIndex, fName.length()).toLowerCase();        Log.d(TAG, "fName = " + fName + " dotIndex = " + dotIndex + " end = " + end);        if (TextUtils.isEmpty(end)) return type;        //在MIME和文件类型的匹配表中找到对应的MIME类型。        for (int i = 0; i < MIME_MapTable.length; i++) {            if (end.equals(MIME_MapTable[i][0]))                type = MIME_MapTable[i][1];        }        return type;    }    /**     * 打开文件     *     * @param file     */    public static void openFile(Context context, File file) {        //Uri uri = Uri.parse("file://"+file.getAbsolutePath());        Intent intent = new Intent();        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        //设置intent的Action属性        intent.setAction(Intent.ACTION_VIEW);        //获取文件file的MIME类型        String type = getMIMETypeString(file);        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);        Uri uri = FileProvider.getUriForFile(context, auther,file);        //设置intent的data和Type属性。        intent.setDataAndType(uri, type);        //跳转        context.startActivity(intent);    }    public static final String[][] MIME_MapTable = {            //{后缀名,MIME类型}            {"pbm", "image/x-portable-bitmap"},            {"pcx", "image/x-pcx"},            {"nbmp", "image/nbmp"},            {"pda", "image/x-pda"},            {"pgm", "image/x-portable-graymap"},            {"pict", "image/x-pict"},            {"png", "image/png"},            {"pnm", "image/x-portable-anymap"},            {"pnz", "image/png"},            {"ppm", "image/x-portable-pixmap"},            {"nokia-op-logo", "image/vnd.nok-oplogo-color"},            {"qti", "image/x-quicktime"},            {"qtif", "image/x-quicktime"},            {"ras", "image/x-cmu-raster"},            {"rf", "image/vnd.rn-realflash"},            {"rp", "image/vnd.rn-realpix"},            {"rgb", "image/x-rgb"},            {"si9", "image/vnd.lgtwap.sis"},            {"si7", "image/vnd.stiwap.sis"},            {"svf", "image/vnd"},            {"svg", "image/svg-xml"},            {"svh", "image/svh"},            {"si6", "image/si6"},            {"tif", "image/tiff"},            {"tiff", "image/tiff"},            {"toy", "image/toy"},            {"wbmp", "image/vnd.wap.wbmp"},            {"wi", "image/wavelet"},            {"wpng", "image/x-up-wpng"},            {"xbm", "image/x-xbitmap"},            {"xpm", "image/x-xpixmap"},            {"xwd", "image/x-xwindowdump"},            {"fh4", "image/x-freehand"},            {"fh5", "image/x-freehand"},            {"fhc", "image/x-freehand"},            {"fif", "image/fif"},            {"bmp", "image/bmp"},            {"cal", "image/x-cals"},            {"cod", "image/cis-cod"},            {"fpx", "image/x-fpx"},            {"dcx", "image/x-dcx"},            {"eri", "image/x-eri"},            {"gif", "image/gif"},            {"ief", "image/ief"},            {"ifm", "image/gif"},            {"ifs", "image/ifs"},            {"j2k", "image/j2k"},            {"jpe", "image/jpeg"},            {"jpeg", "image/jpeg"},            {"jpg", "image/jpeg"},            {"jpz", "image/jpeg"},            {"mil", "image/x-cals"},            {"3gp", "video/3gpp"},            {"asf", "video/x-ms-asf"},            {"asx", "video/x-ms-asf"},            {"avi", "video/x-msvideo"},            {"fvi", "video/isivideo"},            {"lsf", "video/x-ms-asf"},            {"lsx", "video/x-ms-asf"},            {"m4u", "video/vnd.mpegurl"},            {"m4v", "video/x-m4v"},            {"pvx", "video/x-pv-pvx"},            {"qt", "video/quicktime"},            {"rv", "video/vnd.rn-realvideo"},            {"viv", "video/vivo"},            {"vivo", "video/vivo"},            {"vdo", "video/vdo"},            {"wm", "video/x-ms-wm"},            {"wmx", "video/x-ms-wmx"},            {"wv", "video/wavelet"},            {"wvx", "video/x-ms-wvx"},            {"mov", "video/quicktime"},            {"movie", "video/x-sgi-movie"},            {"mp4", "video/mp4"},            {"mng", "video/x-mng"},            {"mpe", "video/mpeg"},            {"mpeg", "video/mpeg"},            {"mpg video/mpeg"},            {"mpg4", "video/mp4"},            {"aif", "audio/x-aiff"},            {"aifc", "audio/x-aiff"},            {"aiff", "audio/x-aiff"},            {"als", "audio/X-Alpha5"},            {"au", "audio/basic"},            {"es", "audio/echospeech"},            {"esl", "audio/echospeech"},            {"awb", "audio/amr-wb"},            {"imy", "audio/melody"},            {"it", "audio/x-mod"},            {"itz", "audio/x-mod"},            {"tsi", "audio/tsplayer"},            {"ult", "audio/x-mod"},            {"vib", "audio/vib"},            {"vox", "audio/voxware"},            {"vqe", "audio/x-twinvq-plugin"},            {"vqf", "audio/x-twinvq"},            {"vql", "audio/x-twinvq"},            {"wav", "audio/x-wav"},            {"wax", "audio/x-ms-wax"},            {"wmv", "audio/x-ms-wmv"},            {"wma", "audio/x-ms-wma"},            {"xmz", "audio/x-mod"},            {"m15", "audio/x-mod"},            {"m3u", "audio/x-mpegurl"},            {"m3url", "audio/x-mpegurl"},            {"m4a", "audio/mp4a-latm"},            {"m4b", "audio/mp4a-latm"},            {"m4p", "audio/mp4a-latm"},            {"ma1", "audio/ma1"},            {"ma2", "audio/ma2"},            {"ma3", "audio/ma3"},            {"ma5", "audio/ma5"},            {"mdz", "audio/x-mod"},            {"mid", "audio/midi"},            {"midi", "audio/midi"},            {"mio", "audio/x-mio"},            {"mod", "audio/x-mod"},            {"mp2", "audio/x-mpeg"},            {"mp3", "audio/x-mpeg"},            {"mpga", "audio/mpeg"},            {"ogg", "audio/ogg"},            {"nsnd", "audio/nsnd"},            {"pae", "audio/x-epac"},            {"pac", "audio/x-pac"},            {"qcp", "audio/vnd.qcelp"},            {"ra", "audio/x-pn-realaudio"},            {"ram", "audio/x-pn-realaudio"},            {"rm", "audio/x-pn-realaudio"},            {"rmf", "audio/x-rmf"},            {"rmm", "audio/x-pn-realaudio"},            {"rmvb", "audio/x-pn-realaudio"},            {"rpm", "audio/x-pn-realaudio-plugin"},            {"s3m", "audio/x-mod"},            {"s3z", "audio/x-mod"},            {"stm", "audio/x-mod"},            {"smz", "audio/x-smd"},            {"snd", "audio/basic"},            {"smd", "audio/x-smd"},            {"xm", "audio/x-mod"},            {"c", "text/plain"},            {"asc", "text/plain"},            {"conf", "text/plain"},            {"cpp", "text/plain"},            {"css", "text/css"},            {"dhtml", "text/html"},            {"etx", "text/x-setext"},            {"h", "text/plain"},            {"hdm", "text/x-hdml"},            {"hdml", "text/x-hdml"},            {"htm", "text/html"},            {"html", "text/html"},            {"hts", "text/html"},            {"jad", "text/vnd.sun.j2me.app-descriptor"},            {"java", "text/plain"},            {"log", "text/plain"},            {"mel", "text/x-vmel"},            {"mrl", "text/x-mrml"},            {"prop", "text/plain"},            {"r3t", "text/vnd.rn-realtext3d"},            {"sgm", "text/x-sgml"},            {"rc", "text/plain"},            {"rtx", "text/richtext"},            {"rt", "text/vnd.rn-realtext"},            {"sgml", "text/x-sgml"},            {"spc", "text/x-speech"},            {"txt", "text/plain"},            {"tsv", "text/tab-separated-values"},            {"tsv", "text/tab-separated-values"},            {"talk", "text/x-speech"},            {"vcf", "text/x-vcard"},            {"wml", "text/vnd.wap.wml"},            {"wmls", "text/vnd.wap.wmlscript"},            {"wmlscript", "text/vnd.wap.wmlscript"},            {"ws", "text/vnd.wap.wmlscript"},            {"xml", "text/xml"},            {"xsit", "text/xml"},            {"xsl", "text/xml"},            {"xul", "text/xul"},            {"apk", "application/vnd.android.package-archive"},            {"aab", "application/x-authoware-bin"},            {"aam", "application/x-authoware-map"},            {"aas", "application/x-authoware-seg"},            {"ai", "application/postscript"},            {"amc", "application/x-mpeg"},            {"ani", "application/octet-stream"},            {"asd", "application/astound"},            {"asn", "application/astound"},            {"asp", "application/x-asap"},            {"avb", "application/octet-stream"},            {"bcpio", "application/x-bcpio"},            {"bin", "application/octet-stream"},            {"bld", "application/bld"},            {"bld2", "application/bld2"},            {"bpk", "application/octet-stream"},            {"bz2", "application/x-bzip2"},            {"ccn", "application/x-cnc"},            {"cco", "application/x-cocoa"},            {"cdf", "application/x-netcdf"},            {"chat", "application/x-chat"},            {"class", "application/octet-stream"},            {"clp", "application/x-msclip"},            {"cmx", "application/x-cmx"},            {"co", "application/x-cult3d-object"},            {"cpio", "application/x-cpio"},            {"cpt", "application/mac-compactpro"},            {"crd", "application/x-mscardfile"},            {"csh", "application/x-csh"},            {"cur", "application/octet-stream"},            {"dcr", "application/x-director"},            {"dir", "application/x-director"},            {"dll", "application/octet-stream"},            {"dmg", "application/octet-stream"},            {"dms", "application/octet-stream"},            {"doc", "application/msword"},            {"docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},            {"dot", "application/x-dot"},            {"dvi", "application/x-dvi"},            {"dwg", "application/x-autocad"},            {"dxf", "application/x-autocad"},            {"dxr", "application/x-director"},            {"ebk", "application/x-expandedbook"},            {"eps", "application/postscript"},            {"evy", "application/x-envoy"},            {"exe", "application/octet-stream"},            {"etc", "application/x-earthtime"},            {"fm", "application/x-maker"},            {"gps", "application/x-gps"},            {"gtar", "application/x-gtar"},            {"gz", "application/x-gzip"},            {"gca", "application/x-gca-compressed"},            {"hdf", "application/x-hdf"},            {"hlp", "application/winhlp"},            {"hqx", "application/mac-binhex40"},            {"ico", "application/octet-stream"},            {"ins", "application/x-NET-Install"},            {"ips", "application/x-ipscript"},            {"ipx", "application/x-ipix"},            {"jam", "application/x-jam"},            {"jar", "application/java-archive"},            {"jnlp", "application/x-java-jnlp-file"},            {"latex", "application/x-latex"},            {"lcc", "application/fastman"},            {"lcl", "application/x-digitalloca"},            {"lcr", "application/x-digitalloca"},            {"lgh", "application/lgh"},            {"lha", "application/octet-stream"},            {"js", "application/x-javascript"},            {"jwc", "application/jwc"},            {"kjx", "application/x-kjx"},            {"lzh", "application/x-lzh"},            {"m13", "application/x-msmediaview"},            {"m14", "application/x-msmediaview"},            {"man", "application/x-troff-man"},            {"mbd", "application/mbedlet"},            {"mct", "application/x-mascot"},            {"mdb", "application/x-msaccess"},            {"me", "application/x-troff-me"},            {"mi", "application/x-mif"},            {"mif", "application/x-mif"},            {"mmf", "application/x-skt-lbs"},            {"mny", "application/x-msmoney"},            {"moc", "application/x-mocha"},            {"mocha", "application/x-mocha"},            {"mpn", "application/vnd.mophun.application"},            {"mpc", "application/vnd.mpohun.certificate"},            {"mof", "application/x-yumekara"},            {"mpp", "application/vnd.ms-project"},            {"mps", "application/x-mapserver"},            {"mrm", "application/x-mrm"},            {"ms", "application/x-troff-ms"},            {"msg", "application/vnd.ms-outlook"},            {"mts", "application/metastream"},            {"mtx", "application/metastream"},            {"mtz", "application/metastream"},            {"mzv", "application/metastream"},            {"nar", "application/zip"},            {"nc", "application/x-netcdf"},            {"ndwn", "application/ndwn"},            {"nif", "application/x-nif"},            {"nmz", "application/x-scream"},            {"npx", "application/x-netfpx"},            {"nva", "application/x-neva1"},            {"oda", "application/oda"},            {"oom", "application/x-AtlasMate-Plugin"},            {"pan", "application/x-pan"},            {"pdf", "application/pdf"},            {"pfr", "application/font-tdpfr"},            {"pm", "application/x-perl"},            {"pmd", "application/x-pmd"},            {"pot", "application/vnd.ms-powerpoint"},            {"pps", "application/vnd.ms-powerpoint"},            {"ppt", "application/vnd.ms-powerpoint"},            {"pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},            {"pqf", "application/x-cprplayer"},            {"pqi", "application/cprplayer"},            {"proxy", "application/x-ns-proxy-autoconfig"},            {"ps", "application/postscript"},            {"ptlk", "application/listenup"},            {"pub", "application/x-mspublisher"},            {"prc", "application/x-prc"},            {"rar", "application/x-rar-compressed"},            {"rdf", "application/rdf+xml"},            {"rlf", "application/x-richlink"},            {"rnx", "application/vnd.rn-realplayer"},            {"roff", "application/x-troff"},            {"rtf", "application/rtf"},            {"rtg", "application/metastream"},            {"rwc", "application/x-rogerwilco"},            {"sca", "application/x-supercard"},            {"scd", "application/x-msschedule"},            {"sdf", "application/e-score"},            {"sea", "application/x-stuffit"},            {"sh", "application/x-sh"},            {"shw", "application/presentations"},            {"shar", "application/x-shar"},            {"sis", "application/vnd.symbian.install"},            {"sit", "application/x-stuffit"},            {"skd", "application/x-Koan"},            {"skm", "application/x-Koan"},            {"skp", "application/x-Koan"},            {"skt", "application/x-Koan"},            {"slc", "application/x-salsa"},            {"smi", "application/smil"},            {"smil", "application/smil"},            {"smp", "application/studiom"},            {"spl", "application/futuresplash"},            {"spr", "application/x-sprite"},            {"sprite", "application/x-sprite"},            {"spt", "application/x-spt"},            {"src", "application/x-wais-source"},            {"stk", "application/hyperstudio"},            {"sv4cpio", "application/x-sv4cpio"},            {"sv4crc", "application/x-sv4crc"},            {"swf", "application/x-shockwave-flash"},            {"swfl", "application/x-shockwave-flash"},            {"t", "application/x-troff"},            {"tad", "application/octet-stream"},            {"tar", "application/x-tar"},            {"taz", "application/x-tar"},            {"tbp", "application/x-timbuktu"},            {"tbt", "application/x-timbuktu"},            {"tcl", "application/x-tcl"},            {"tex", "application/x-tex"},            {"texi", "application/x-texinfo"},            {"texinfo", "application/x-texinfo"},            {"tgz", "application/x-tar"},            {"thm", "application/vnd.eri.thm"},            {"tki", "application/x-tkined"},            {"tkined", "application/x-tkined"},            {"toc", "application/toc"},            {"tr", "application/x-troff"},            {"trm", "application/x-msterminal"},            {"tsp", "application/dsptype"},            {"ttf", "application/octet-stream"},            {"ttz", "application/t-time"},            {"ustar", "application/x-ustar"},            {"uu", "application/x-uuencode"},            {"uue", "application/x-uuencode"},            {"vcd", "application/x-cdlink"},            {"vmd", "application/vocaltec-media-desc"},            {"vmf", "application/vocaltec-media-file"},            {"vmi", "application/x-dreamcast-vms-info"},            {"vms", "application/x-dreamcast-vms"},            {"wis", "application/x-InstallShield"},            {"wmd", "application/x-ms-wmd"},            {"wmf", "application/x-msmetafile"},            {"wmlc", "application/vnd.wap.wmlc"},            {"wmlsc", "application/vnd.wap.wmlscriptc"},            {"wps", "application/vnd.ms-works"},            {"wmz", "application/x-ms-wmz"},            {"wri", "application/x-mswrite"},            {"web", "application/vnd.xara"},            {"wsc", "application/vnd.wap.wmlscriptc"},            {"wxl", "application/x-wxl"},            {"x-gzip", "application/x-gzip"},            {"xar", "application/vnd.xara"},            {"xdm", "application/x-xdma"},            {"xdma", "application/x-xdma"},            {"xdw", "application/vnd.fujixerox.docuworks"},            {"xht", "application/xhtml+xml"},            {"xhtm", "application/xhtml+xml"},            {"xhtml", "application/xhtml+xml"},            {"xla", "application/vnd.ms-excel"},            {"xlc", "application/vnd.ms-excel"},            {"xll", "application/x-excel"},            {"xlm", "application/vnd.ms-excel"},            {"xls", "application/vnd.ms-excel"},            {"xlt", "application/vnd.ms-excel"},            {"xlw", "application/vnd.ms-excel"},            {"xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},            {"xpi", "application/x-xpinstall"},            {"yz1", "application/x-yz1"},            {"z", "application/x-compress"},            {"zac", "application/x-zaurus-zac"},            {"zip", "application/zip"},            {"gau", "chemical/x-gaussian-input"},            {"csm", "chemical/x-csml"},            {"csml", "chemical/x-csml"},            {"emb", "chemical/x-embl-dl-nucleotide"},            {"embl", "chemical/x-embl-dl-nucleotide"},            {"mol", "chemical/x-mdl-molfile"},            {"pdb", "chemical/x-pdb"},            {"xyz", "chemical/x-pdb"},            {"mop", "chemical/x-mopac-input"},            {"dcm", "x-lml/x-evm"},            {"evm", "x-lml/x-evm"},            {"gdb", "x-lml/x-gdb"},            {"lak", "x-lml/x-lak"},            {"lml", "x-lml/x-lml"},            {"lmlpack", "x-lml/x-lmlpack"},            {"ndb", "x-lml/x-ndb"},            {"rte", "x-lml/x-gps"},            {"wpt", "x-lml/x-gps"},            {"trk", "x-lml/x-gps"},            {"svr", "x-world/x-svr"},            {"ivr", "i-world/i-vrml"},            {"vre", "x-world/x-vream"},            {"vrml", "x-world/x-vrml"},            {"vrt", "x-world/x-vrt"},            {"vrw", "x-world/x-vream"},            {"vts", "workbook/formulaone"},            {"wrl", "x-world/x-vrml"},            {"wrz", "x-world/x-vrml"},            {"dwf", "drawing/x-dwf"},            {"ice", "x-conference/x-cooltalk"},            {"map", "magnus-internal/imagemap"},            {"shtml", "magnus-internal/parsed-html"},            {"cgi", "magnus-internal/cgi"},            {"", "*/*"}    };}

 

更多相关文章

  1. Android(安卓)Too many classes in --main-dex-list 错误原因及A
  2. android开机动画
  3. android注意事项。随时补充
  4. Android中使用PULL方式解析XML文件深入介绍
  5. Android(安卓)技术专题系列之五 -- 本地化
  6. Android—— ubuntu下【CTS】测试TV真机
  7. android 如何保护我们的app(二)(干货)
  8. Android使用文件管理器打开指定文件夹,浏览里面的内容
  9. NPM 和webpack 的基础使用

随机推荐

  1. android网络通信之-Http(Android操作HTTP
  2. Android Action使用实例
  3. android修改默认语言
  4. Android当前时间的获取
  5. 控制android弹出框不消失
  6. Android中控制虚拟键盘
  7. Android DownloadManager 使用
  8. 深入浅出Android Support Annotations
  9. Android常见面试题总结 1.1
  10. Android 双击退出应用