Android(安卓)打开文件
16lz
2021-12-04
在Android 7.0之前打开文件只需要。
private static void openFile(Context context, File f) { Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW); String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(f).toString()); String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); myIntent.setDataAndType(Uri.fromFile(f), mimetype); context.startActivity(myIntent); }
但是Android 7.0之后就不行了,对于7.0之后首先要在AndroidManifest.xml中声明Provider。
然后再项目中新建xml文件夹,在其中创建对应的文件filepaths.xml。 <?xml version="1.0" encoding="utf-8"?>
最后再实现功能。 private static void openFile(Context context, File f) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(f).toString()); String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); //7.0以上需要 if (Build.VERSION.SDK_INT >= 24) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri uri = FileProvider.getUriForFile(context, "com.example.administrator.main.fileprovider", f); intent.setDataAndType(uri, mimetype); } else { intent.setDataAndType(Uri.fromFile(f), mimetype); } context.startActivity(intent); }
更多相关文章
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- Android(安卓)记录gitignore文件内容
- Android(安卓)studio 多线程网络文件下载
- AndroidManifest.xml配置文件选项详解
- 将 android sql文件放生成在sd卡
- Android(安卓)Io 整理
- Android写文件到SDCard的简单代码
- Android和PC端通过局域网文件同步