Android 打开系统文件管理器选择文件
记录一下打开手机文件管理器选择文件的实现代码:
//定义 请求返回码public static final int IMPORT_REQUEST_CODE=10005;public void openFileManager(){Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("*/*");//设置类型,我这里是任意类型,可以过滤文件类型intent.addCategory(Intent.CATEGORY_OPENABLE);startActivityForResult(intent,IMPORT_REQUEST_CODE);}@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == ImportModule.IMPORT_REQUEST_CODE) {if (resultCode == RESULT_OK) {Uri uri = data.getData();if (uri != null) {String path = getPath(this, uri);if (path != null) {File file = new File(path);if (file.exists()) {String upLoadFilePath = file.toString();String upLoadFileName = file.getName();}}}}Log.e("导入失败","")}}@RequiresApi(api = Build.VERSION_CODES.KITKAT)public String getPath(final Context context, final Uri uri) {final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;// DocumentProviderif (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {// ExternalStorageProviderif (isExternalStorageDocument(uri)) {final String docId = DocumentsContract.getDocumentId(uri);final String[] split = docId.split(":");final String type = split[0];if ("primary".equalsIgnoreCase(type)) {return Environment.getExternalStorageDirectory() + "/" + split[1];}}// DownloadsProviderelse if (isDownloadsDocument(uri)) {final String id = DocumentsContract.getDocumentId(uri);final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));return getDataColumn(context, contentUri, null, null);}// MediaProviderelse if (isMediaDocument(uri)) {final String docId = DocumentsContract.getDocumentId(uri);final String[] split = docId.split(":");final String type = split[0];Uri contentUri = null;if ("image".equals(type)) {contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;} else if ("video".equals(type)) {contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;} else if ("audio".equals(type)) {contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;}final String selection = "_id=?";final String[] selectionArgs = new String[]{split[1]};return getDataColumn(context, contentUri, selection, selectionArgs);}}// MediaStore (and general)else if ("content".equalsIgnoreCase(uri.getScheme())) {return getDataColumn(context, uri, null, null);}// Fileelse if ("file".equalsIgnoreCase(uri.getScheme())) {return uri.getPath();}return null;}public String getDataColumn(Context context, Uri uri, String selection,String[] selectionArgs) {Cursor cursor = null;final String column = "_data";final String[] projection = {column};try {cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,null);if (cursor != null && cursor.moveToFirst()) {final int column_index = cursor.getColumnIndexOrThrow(column);return cursor.getString(column_index);}} finally {if (cursor != null)cursor.close();}return null;}public boolean isExternalStorageDocument(Uri uri) {return "com.android.externalstorage.documents".equals(uri.getAuthority());}public boolean isDownloadsDocument(Uri uri) {return "com.android.providers.downloads.documents".equals(uri.getAuthority());}public boolean isMediaDocument(Uri uri) {return "com.android.providers.media.documents".equals(uri.getAuthority());}
Android 打开系统文件管理器选择文件相关推荐
- Android 打开系统文件管理器,并返回选中文件的路径
职场小白迷上优美句子: 推迟,拖延真的是件可怕的事,过去了好久还是原来的样子. 公司现在的项目中有一个需求,需要把本地 json 格式的数据导入到项目中使用,其实简单的逻辑就是:使用安卓隐式跳转的方式 ...
- win10 uwp 打开文件管理器选择文件
本文:让文件管理器选择文件,不是从文件管理器获得文件. 假如已经获得一些文件,那么如何从文件管理器选择这些文件? 使用方法很简单. 从网上拿图来说 打开文件夹自动选择所有文件 首先需要获得文件夹,因为 ...
- android 调用系统文件管理器
今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源. 这几天,还是因为搬家的事,导致自己状态很差.和领导说想要辞职,领导说还是先适应一下在说.所以还是坚持了. 这个其实也很简单, ...
- android调用系统下载器下载文件
在项目中使用到了在android端下载服务端的文件,之前使用的是http下载方式,现在想改成调用系统的下载器进行下载,实现步骤为: 1.得到url:文件下载地址 2.使用URL下载: (1)下载前先判 ...
- android调用文件管理器回调,Android中调用系统管理器选择文件并返回绝对路径
选择文件的时候,如果使用的是第三方软件,一般是直接返回绝对路径的Uri,如果是系统的,则会返回媒体库的xxxx,所以单纯一种方式选择文件,很可能拿到的绝对路径是错的或者是空的,所以需要做几种处理,这里 ...
- Unity+Android 打开安卓文件管理器,并拿到文件的真实路径
搞了个最新的package(支持安卓以及IOS),下载导入到Unity里面就行: 下载链接:Unity+Android PickFile Java代码 package com.zrqz.filebro ...
- Qt 之打开系统文件管理器
打开文件管理器有两种方案: 1.使用 QProcess 调用win系统自带 explorer 程序打开 //获取程序当前目录 QString path = "E:\\VS2015" ...
- Android , 打开系统播放器
需要配上权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> bu ...
- Qt Android 调用系统文件管理
1.了解 使用JNI扩展Qt应用 参考<Qt on Android核心编程>15章 源码https://download.csdn.net/download/dinosaurx/10149 ...
- Android打开系统自带文件管理器,选择指定类型的文件
//调用系统文件管理器打开指定路径目录Intent intent = new Intent(Intent.ACTION_GET_CONTENT);//intent.setDataAndType(Uri ...
最新文章
- php读取西门子plc_基于Socket访问西门子PLC系列教程(二)
- Unity 4.x游戏开发技巧集锦(内部资料)
- 推荐系统数据集大列表
- 工控安全要避开传统IT安全思路的几个“暗坑”
- Tree命令安装和使用
- kettle从入门到精通_数据分析师的全景职业规划,入门、转行都先看这篇
- angular 点击事件阻止冒泡及默认行为
- sparkStreaming+kafka SparkException: java.nio.channels.ClosedChannelException异常报错
- 想要入坑机器学习?这是MIT在读博士的AI心得
- 记一次反制追踪溯本求源
- 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.1 运用试错法
- 毕业论文:vrml设计的虚拟校园
- 如何用c语言强制删除文件夹,c++ - 使用C ++在Windows上强制删除文件 - 堆栈内存溢出...
- 硬件模拟大师_用机器人做咖啡,“智咖大师”这样升级新零售
- iOS开发通过微信学习hijack(一)函数劫持
- Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Cou
- processing实现图像碎片化
- Idea新建项目名后出现中括号别名
- 基于51单片机---遥控灯
- 广义线性模型 1统计学导论【作业】