Android 动态获取系统权限+调用外部应用读取本地文件(TBS+自定义)
一、获取动态权限
1.创建Android应用,在配置文件中添加临时访问文件权限
<!-- android 7.0临时赋予访问权限 android:name="android.support.v4.content.FileProvider" --> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.build_input" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
新建xml文件,配置name和path路径
<?xml version="1.0" encoding="utf-8"?> <paths> <!-- name随便起--> <external-path name="camera_photos" path="/" /> </paths>
2.配置系统需要用到的系统权限
<!-- 向SD卡写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
3.编写申请动态权限方法,在onCreate()方法中调用
//申请权限 private boolean getPermission(Activity activity){ boolean rs=false; // 声明一个集合,在后面的代码中用来存储用户拒绝授权的权 List<String> permissionList = new ArrayList<>(); String[] permissions = new String[]{ Manifest.permission.READ_EXTERNAL_STORAGE,//读取内存卡 Manifest.permission.WRITE_EXTERNAL_STORAGE,//写入内存卡 // Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,//允许挂载和反挂载文件系统可移动存储 // Manifest.permission.READ_PHONE_STATE,//读取手机状态和身份 /* Manifest.permission.ACCESS_WIFI_STATE,//获取使用Wi-Fi等WLAN无线网络 Manifest.permission.CHANGE_WIFI_STATE,//允许程序改变Wi-Fi连接状态 Manifest.permission.ACCESS_NETWORK_STATE,//允许程序访问有关GSM网络信息 Manifest.permission.CHANGE_NETWORK_STATE,//允许程序改变网络连接状态 Manifest.permission.INTERNET,//访问网络连接,可能产生GPRS流量 Manifest.permission.BLUETOOTH,//允许程序连接到已配对的蓝牙设备 Manifest.permission.CAMERA,//相机 Manifest.permission.WRITE_SETTINGS,//允许程序读取或写入系统设置*/ }; permissionList.clear(); for (int i = 0; i < permissions.length; i++) { if (ContextCompat.checkSelfPermission(activity, permissions[i]) != PackageManager.PERMISSION_GRANTED) { Log.e(TAG,"权限未允许:"+permissions[i]+"...."); permissionList.add(permissions[i]); } } if (permissionList.isEmpty()) {//未授予的权限为空,表示都授予了 Log.e(TAG,"已经获取到了所有权限"); return true; } else {//请求权限方法 String[] spermissions = permissionList.toArray(new String[permissionList.size()]);//将List转为数组 ActivityCompat.requestPermissions(activity, spermissions, 1); } return rs; }
4.处理授权回调
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode==1){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { boolean request_rs=true; for(int i=0;i<grantResults.length;i++){ if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { request_rs=false; } } if(request_rs){ Log.e("软件获取权限结果:","获取软件权限成功"); init(); }else{ Toast.makeText(this, "您拒绝了软件应用权限,因此无法使用该软件!", Toast.LENGTH_LONG).show(); showDialogTipUserGoToAppSettting(); } } } }
若未获取的权限,则提醒用户手动开启权限
/** * 提示用户去应用设置界面手动开启权限 */ private void showDialogTipUserGoToAppSettting() { new AlertDialog.Builder(this) .setTitle("存储权限不可用") .setMessage("请在-应用设置-权限-中,允许应用使用存储权限来保存用户数据") .setPositiveButton("立即开启", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 跳转到应用设置界面 goToAppSetting(); android.os.Process.killProcess(android.os.Process.myPid()); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { android.os.Process.killProcess(android.os.Process.myPid()); } }).setCancelable(false).show(); } /** * 跳转到当前应用的设置界面 */ private void goToAppSetting() { Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivityForResult(intent, 123); }
二、调用应用打开本地文件
第一种,根据文件类型自动选取应用打开文件
1.创建文件类型数组
/** * -- MIME 列表 -- */ public static final String[][] MIME_MapTable = { // --{后缀名, MIME类型} -- {".3gp", "video/3gpp"},{".3gpp", "video/3gpp"},{".aac", "audio/x-mpeg"}, {".amr", "audio/x-mpeg"},{".apk", "application/vnd.android.package-archive"}, {".avi", "video/x-msvideo"}, {".aab", "application/x-authoware-bin"}, {".aam", "application/x-authoware-map"}, {".aas", "application/x-authoware-seg"}, {".ai", "application/postscript"}, {".aif", "audio/x-aiff"}, {".aifc", "audio/x-aiff"}, {".aiff", "audio/x-aiff"}, {".als", "audio/x-alpha5"}, {".amc", "application/x-mpeg"}, {".ani", "application/octet-stream"}, {".asc", "text/plain"}, {".asd", "application/astound"}, {".asf", "video/x-ms-asf"}, {".asn", "application/astound"}, {".asp", "application/x-asap"}, {".asx", " video/x-ms-asf"}, {".au", "audio/basic"}, {".avb", "application/octet-stream"}, {".awb", "audio/amr-wb"}, {".bcpio", "application/x-bcpio"}, {".bld", "application/bld"}, {".bld2", "application/bld2"}, {".bpk", "application/octet-stream"}, {".bz2", "application/x-bzip2"}, {".bin", "application/octet-stream"}, {".bmp", "image/bmp"}, {".c", "text/plain"}, {".class", "application/octet-stream"}, {".conf", "text/plain"}, {".cpp", "text/plain"}, {".cal", "image/x-cals"}, {".ccn", "application/x-cnc"}, {".cco", "application/x-cocoa"}, {".cdf", "application/x-netcdf"}, {".cgi", "magnus-internal/cgi"}, {".chat", "application/x-chat"}, {".clp", "application/x-msclip"}, {".cmx", "application/x-cmx"}, {".co", "application/x-cult3d-object"}, {".cod", "image/cis-cod"}, {".cpio", "application/x-cpio"}, {".cpt", "application/mac-compactpro"}, {".crd", "application/x-mscardfile"}, {".csh", "application/x-csh"}, {".csm", "chemical/x-csml"}, {".csml", "chemical/x-csml"}, {".css", "text/css"}, {".cur", "application/octet-stream"}, {".doc", "application/msword"}, {".dcm", "x-lml/x-evm"}, {".dcr", "application/x-director"}, {".dcx", "image/x-dcx"}, {".dhtml", "text/html"}, {".dir", "application/x-director"}, {".dll", "application/octet-stream"}, {".dmg", "application/octet-stream"}, {".dms", "application/octet-stream"}, {".dot", "application/x-dot"}, {".dvi", "application/x-dvi"}, {".dwf", "drawing/x-dwf"}, {".dwg", "application/x-autocad"}, {".dxf", "application/x-autocad"}, {".dxr", "application/x-director"}, {".ebk", "application/x-expandedbook"}, {".emb", "chemical/x-embl-dl-nucleotide"}, {".embl", "chemical/x-embl-dl-nucleotide"}, {".eps", "application/postscript"}, {".epub", "application/epub+zip"}, {".eri", "image/x-eri"}, {".es", "audio/echospeech"}, {".esl", "audio/echospeech"}, {".etc", "application/x-earthtime"}, {".etx", "text/x-setext"}, {".evm", "x-lml/x-evm"}, {".evy", "application/x-envoy"}, {".exe", "application/octet-stream"}, {".fh4", "image/x-freehand"}, {".fh5", "image/x-freehand"}, {".fhc", "image/x-freehand"}, {".fif", "image/fif"}, {".fm", "application/x-maker"}, {".fpx", "image/x-fpx"}, {".fvi", "video/isivideo"}, {".flv", "video/x-msvideo"}, {".gau", "chemical/x-gaussian-input"}, {".gca", "application/x-gca-compressed"}, {".gdb", "x-lml/x-gdb"}, {".gif", "image/gif"}, {".gps", "application/x-gps"}, {".gtar", "application/x-gtar"}, {".gz", "application/x-gzip"}, {".gif", "image/gif"}, {".gtar", "application/x-gtar"}, {".gz", "application/x-gzip"}, {".h", "text/plain"}, {".hdf", "application/x-hdf"}, {".hdm", "text/x-hdml"}, {".hdml", "text/x-hdml"}, {".htm", "text/html"}, {".html", "text/html"}, {".hlp", "application/winhlp"}, {".hqx", "application/mac-binhex40"}, {".hts", "text/html"}, {".ice", "x-conference/x-cooltalk"}, {".ico", "application/octet-stream"}, {".ief", "image/ief"}, {".ifm", "image/gif"}, {".ifs", "image/ifs"}, {".imy", "audio/melody"}, {".ins", "application/x-net-install"}, {".ips", "application/x-ipscript"}, {".ipx", "application/x-ipix"}, {".it", "audio/x-mod"}, {".itz", "audio/x-mod"}, {".ivr", "i-world/i-vrml"}, {".j2k", "image/j2k"}, {".jad", "text/vnd.sun.j2me.app-descriptor"}, {".jam", "application/x-jam"}, {".jnlp", "application/x-java-jnlp-file"}, {".jpe", "image/jpeg"}, {".jpz", "image/jpeg"}, {".jwc", "application/jwc"}, {".jar", "application/java-archive"}, {".java", "text/plain"}, {".jpeg", "image/jpeg"}, {".jpg", "image/jpeg"}, {".js", "application/x-javascript"}, {".kjx", "application/x-kjx"}, {".lak", "x-lml/x-lak"}, {".latex", "application/x-latex"}, {".lcc", "application/fastman"}, {".lcl", "application/x-digitalloca"}, {".lcr", "application/x-digitalloca"}, {".lgh", "application/lgh"}, {".lha", "application/octet-stream"}, {".lml", "x-lml/x-lml"}, {".lmlpack", "x-lml/x-lmlpack"}, {".log", "text/plain"}, {".lsf", "video/x-ms-asf"}, {".lsx", "video/x-ms-asf"}, {".lzh", "application/x-lzh "}, {".m13", "application/x-msmediaview"}, {".m14", "application/x-msmediaview"}, {".m15", "audio/x-mod"}, {".m3u", "audio/x-mpegurl"}, {".m3url", "audio/x-mpegurl"}, {".ma1", "audio/ma1"}, {".ma2", "audio/ma2"}, {".ma3", "audio/ma3"}, {".ma5", "audio/ma5"}, {".man", "application/x-troff-man"}, {".map", "magnus-internal/imagemap"}, {".mbd", "application/mbedlet"}, {".mct", "application/x-mascot"}, {".mdb", "application/x-msaccess"}, {".mdz", "audio/x-mod"}, {".me", "application/x-troff-me"}, {".mel", "text/x-vmel"}, {".mi", "application/x-mif"}, {".mid", "audio/midi"}, {".midi", "audio/midi"}, {".m4a", "audio/mp4a-latm"}, {".m4b", "audio/mp4a-latm"}, {".m4p", "audio/mp4a-latm"}, {".m4u", "video/vnd.mpegurl"}, {".m4v", "video/x-m4v"}, {".mov", "video/quicktime"}, {".mp2", "audio/x-mpeg"}, {".mp3", "audio/x-mpeg"}, {".mp4", "video/mp4"}, {".mpc", "application/vnd.mpohun.certificate"}, {".mpe", "video/mpeg"}, {".mpeg", "video/mpeg"}, {".mpg", "video/mpeg"}, {".mpg4", "video/mp4"}, {".mpga", "audio/mpeg"}, {".msg", "application/vnd.ms-outlook"}, {".mif", "application/x-mif"}, {".mil", "image/x-cals"}, {".mio", "audio/x-mio"}, {".mmf", "application/x-skt-lbs"}, {".mng", "video/x-mng"}, {".mny", "application/x-msmoney"}, {".moc", "application/x-mocha"}, {".mocha", "application/x-mocha"}, {".mod", "audio/x-mod"}, {".mof", "application/x-yumekara"}, {".mol", "chemical/x-mdl-molfile"}, {".mop", "chemical/x-mopac-input"}, {".movie", "video/x-sgi-movie"}, {".mpn", "application/vnd.mophun.application"}, {".mpp", "application/vnd.ms-project"}, {".mps", "application/x-mapserver"}, {".mrl", "text/x-mrml"}, {".mrm", "application/x-mrm"}, {".ms", "application/x-troff-ms"}, {".mts", "application/metastream"}, {".mtx", "application/metastream"}, {".mtz", "application/metastream"}, {".mzv", "application/metastream"}, {".nar", "application/zip"}, {".nbmp", "image/nbmp"}, {".nc", "application/x-netcdf"}, {".ndb", "x-lml/x-ndb"}, {".ndwn", "application/ndwn"}, {".nif", "application/x-nif"}, {".nmz", "application/x-scream"}, {".nokia-op-logo", "image/vnd.nok-oplogo-color"}, {".npx", "application/x-netfpx"}, {".nsnd", "audio/nsnd"}, {".nva", "application/x-neva1"}, {".oda", "application/oda"}, {".oom", "application/x-atlasMate-plugin"}, {".ogg", "audio/ogg"}, {".pac", "audio/x-pac"}, {".pae", "audio/x-epac"}, {".pan", "application/x-pan"}, {".pbm", "image/x-portable-bitmap"}, {".pcx", "image/x-pcx"}, {".pda", "image/x-pda"}, {".pdb", "chemical/x-pdb"}, {".pdf", "application/pdf"}, {".pfr", "application/font-tdpfr"}, {".pgm", "image/x-portable-graymap"}, {".pict", "image/x-pict"}, {".pm", "application/x-perl"}, {".pmd", "application/x-pmd"}, {".png", "image/png"}, {".pnm", "image/x-portable-anymap"}, {".pnz", "image/png"}, {".pot", "application/vnd.ms-powerpoint"}, {".ppm", "image/x-portable-pixmap"}, {".pps", "application/vnd.ms-powerpoint"}, {".ppt", "application/vnd.ms-powerpoint"}, {".pqf", "application/x-cprplayer"}, {".pqi", "application/cprplayer"}, {".prc", "application/x-prc"}, {".proxy", "application/x-ns-proxy-autoconfig"}, {".prop", "text/plain"}, {".ps", "application/postscript"}, {".ptlk", "application/listenup"}, {".pub", "application/x-mspublisher"}, {".pvx", "video/x-pv-pvx"}, {".qcp", "audio/vnd.qcelp"}, {".qt", "video/quicktime"}, {".qti", "image/x-quicktime"}, {".qtif", "image/x-quicktime"}, {".r3t", "text/vnd.rn-realtext3d"}, {".ra", "audio/x-pn-realaudio"}, {".ram", "audio/x-pn-realaudio"}, {".ras", "image/x-cmu-raster"}, {".rdf", "application/rdf+xml"}, {".rf", "image/vnd.rn-realflash"}, {".rgb", "image/x-rgb"}, {".rlf", "application/x-richlink"}, {".rm", "audio/x-pn-realaudio"}, {".rmf", "audio/x-rmf"}, {".rmm", "audio/x-pn-realaudio"}, {".rnx", "application/vnd.rn-realplayer"}, {".roff", "application/x-troff"}, {".rp", "image/vnd.rn-realpix"}, {".rpm", "audio/x-pn-realaudio-plugin"}, {".rt", "text/vnd.rn-realtext"}, {".rte", "x-lml/x-gps"}, {".rtf", "application/rtf"}, {".rtg", "application/metastream"}, {".rtx", "text/richtext"}, {".rv", "video/vnd.rn-realvideo"}, {".rwc", "application/x-rogerwilco"}, {".rar", "application/x-rar-compressed"}, {".rc", "text/plain"}, {".rmvb", "audio/x-pn-realaudio"}, {".s3m", "audio/x-mod"}, {".s3z", "audio/x-mod"}, {".sca", "application/x-supercard"}, {".scd", "application/x-msschedule"}, {".sdf", "application/e-score"}, {".sea", "application/x-stuffit"}, {".sgm", "text/x-sgml"}, {".sgml", "text/x-sgml"}, {".shar", "application/x-shar"}, {".shtml", "magnus-internal/parsed-html"}, {".shw", "application/presentations"}, {".si6", "image/si6"}, {".si7", "image/vnd.stiwap.sis"}, {".si9", "image/vnd.lgtwap.sis"}, {".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"}, {".smd", "audio/x-smd"}, {".smi", "application/smil"}, {".smil", "application/smil"}, {".smp", "application/studiom"}, {".smz", "audio/x-smd"}, {".sh", "application/x-sh"}, {".snd", "audio/basic"}, {".spc", "text/x-speech"}, {".spl", "application/futuresplash"}, {".spr", "application/x-sprite"}, {".sprite", "application/x-sprite"}, {".sdp", "application/sdp"}, {".spt", "application/x-spt"}, {".src", "application/x-wais-source"}, {".stk", "application/hyperstudio"}, {".stm", "audio/x-mod"}, {".sv4cpio", "application/x-sv4cpio"}, {".sv4crc", "application/x-sv4crc"}, {".svf", "image/vnd"}, {".svg", "image/svg-xml"}, {".svh", "image/svh"}, {".svr", "x-world/x-svr"}, {".swf", "application/x-shockwave-flash"}, {".swfl", "application/x-shockwave-flash"}, {".t", "application/x-troff"}, {".tad", "application/octet-stream"}, {".talk", "text/x-speech"}, {".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"}, {".tif", "image/tiff"}, {".tiff", "image/tiff"}, {".tki", "application/x-tkined"}, {".tkined", "application/x-tkined"}, {".toc", "application/toc"}, {".toy", "image/toy"}, {".tr", "application/x-troff"}, {".trk", "x-lml/x-gps"}, {".trm", "application/x-msterminal"}, {".tsi", "audio/tsplayer"}, {".tsp", "application/dsptype"}, {".tsv", "text/tab-separated-values"}, {".ttf", "application/octet-stream"}, {".ttz", "application/t-time"}, {".txt", "text/plain"}, {".ult", "audio/x-mod"}, {".ustar", "application/x-ustar"}, {".uu", "application/x-uuencode"}, {".uue", "application/x-uuencode"}, {".vcd", "application/x-cdlink"}, {".vcf", "text/x-vcard"}, {".vdo", "video/vdo"}, {".vib", "audio/vib"}, {".viv", "video/vivo"}, {".vivo", "video/vivo"}, {".vmd", "application/vocaltec-media-desc"}, {".vmf", "application/vocaltec-media-file"}, {".vmi", "application/x-dreamcast-vms-info"}, {".vms", "application/x-dreamcast-vms"}, {".vox", "audio/voxware"}, {".vqe", "audio/x-twinvq-plugin"}, {".vqf", "audio/x-twinvq"}, {".vql", "audio/x-twinvq"}, {".vre", "x-world/x-vream"}, {".vrml", "x-world/x-vrml"}, {".vrt", "x-world/x-vrt"}, {".vrw", "x-world/x-vream"}, {".vts", "workbook/formulaone"}, {".wax", "audio/x-ms-wax"}, {".wbmp", "image/vnd.wap.wbmp"}, {".web", "application/vnd.xara"}, {".wav", "audio/x-wav"}, {".wma", "audio/x-ms-wma"}, {".wmv", "audio/x-ms-wmv"}, {".wi", "image/wavelet"}, {".wis", "application/x-InstallShield"}, {".wm", "video/x-ms-wm"}, {".wmd", "application/x-ms-wmd"}, {".wmf", "application/x-msmetafile"}, {".wml", "text/vnd.wap.wml"}, {".wmlc", "application/vnd.wap.wmlc"}, {".wmls", "text/vnd.wap.wmlscript"}, {".wmlsc", "application/vnd.wap.wmlscriptc"}, {".wmlscript", "text/vnd.wap.wmlscript"}, {".wmv", "video/x-ms-wmv"}, {".wmx", "video/x-ms-wmx"}, {".wmz", "application/x-ms-wmz"}, {".wpng", "image/x-up-wpng"}, {".wps", "application/vnd.ms-works"}, {".wpt", "x-lml/x-gps"}, {".wri", "application/x-mswrite"}, {".wrl", "x-world/x-vrml"}, {".wrz", "x-world/x-vrml"}, {".ws", "text/vnd.wap.wmlscript"}, {".wsc", "application/vnd.wap.wmlscriptc"}, {".wv", "video/wavelet"}, {".wvx", "video/x-ms-wvx"}, {".wxl", "application/x-wxl"}, {".x-gzip", "application/x-gzip"}, {".xar", "application/vnd.xara"}, {".xbm", "image/x-xbitmap"}, {".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"}, {".xlsx", "application/vnd.ms-excel"}, // {".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, 07 {".xlt", "application/vnd.ms-excel"}, {".xlw", "application/vnd.ms-excel"}, {".xm", "audio/x-mod"}, {".xml", "text/xml"}, {".xmz", "audio/x-mod"}, {".xpi", "application/x-xpinstall"}, {".xpm", "image/x-xpixmap"}, {".xsit", "text/xml"}, {".xsl", "text/xml"}, {".xul", "text/xul"}, {".xwd", "image/x-xwindowdump"}, {".xyz", "chemical/x-pdb"}, {".yz1", "application/x-yz1"}, {".z", "application/x-compress"}, {".zac", "application/x-zaurus-zac"}, {".zip", "application/zip"}, {"", "*/*"} };
2.获取File文件路径,自定义打开文件
try { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); //Uri.fromFile(new File()) 会出现乱码 intent.setDataAndType(Uri.parse(Uri.decode(url)), FilePath.getMIMEType(url); startActivity(intent); Intent.createChooser(intent, "请选择对应的软件打开该附件!"); } catch (ActivityNotFoundException e) { Toast.makeText(MainActivity.this, "附件打开失败,请下载相关软件!", Toast.LENGTH_SHORT).show(); } /** * --获取文件类型 -- */ public static String getMIMEType(String filePath) { String type = "*/*"; String fName = filePath; int dotIndex = fName.lastIndexOf("."); if (dotIndex < 0) { return type; } String end = fName.substring(dotIndex, fName.length()).toLowerCase(); if (end == "") { return type; } for (int i = 0; i < MIME_MapTable.length; i++) { if (end.equals(MIME_MapTable[i][0])) { type = MIME_MapTable[i][1]; } } return type; }
第二种,调用TBS服务打开文件
1.引入jar包或gradle
//引入腾讯x5 服务 implementation 'com.tencent.tbs.tbssdk:sdk:43939'
2.初始化TBS、调用方法打开文件
// 在调用TBS初始化、创建WebView之前进行如下配置 HashMap map = new HashMap(); map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true); map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true); QbSdk.initTbsSettings(map); QbSdk.openFileReader(MainActivity.this, finalResultData.get(position).getUrl(), null, new ValueCallback<String>() { @Override public void onReceiveValue(String s) { // Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show(); } });
~~~~~~~~~~~~~~Over~~~~~~~~~~~~~~~~~~
源码Demo地址: https://gitee.com/Forever_wind/android-read-file.git
本文来自博客园,作者:Forever丶随风,转载请注明原文链接:https://www.cnblogs.com/Forever-wind/p/15907977.html