记录一下打开手机文件管理器选择文件的实现代码:

 //定义 请求返回码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 打开系统文件管理器选择文件相关推荐

  1. Android 打开系统文件管理器,并返回选中文件的路径

    职场小白迷上优美句子: 推迟,拖延真的是件可怕的事,过去了好久还是原来的样子. 公司现在的项目中有一个需求,需要把本地 json 格式的数据导入到项目中使用,其实简单的逻辑就是:使用安卓隐式跳转的方式 ...

  2. win10 uwp 打开文件管理器选择文件

    本文:让文件管理器选择文件,不是从文件管理器获得文件. 假如已经获得一些文件,那么如何从文件管理器选择这些文件? 使用方法很简单. 从网上拿图来说 打开文件夹自动选择所有文件 首先需要获得文件夹,因为 ...

  3. android 调用系统文件管理器

    今天,简单讲讲android如何调用系统的文件管理器获取目录下的文件资源. 这几天,还是因为搬家的事,导致自己状态很差.和领导说想要辞职,领导说还是先适应一下在说.所以还是坚持了. 这个其实也很简单, ...

  4. android调用系统下载器下载文件

    在项目中使用到了在android端下载服务端的文件,之前使用的是http下载方式,现在想改成调用系统的下载器进行下载,实现步骤为: 1.得到url:文件下载地址 2.使用URL下载: (1)下载前先判 ...

  5. android调用文件管理器回调,Android中调用系统管理器选择文件并返回绝对路径

    选择文件的时候,如果使用的是第三方软件,一般是直接返回绝对路径的Uri,如果是系统的,则会返回媒体库的xxxx,所以单纯一种方式选择文件,很可能拿到的绝对路径是错的或者是空的,所以需要做几种处理,这里 ...

  6. Unity+Android 打开安卓文件管理器,并拿到文件的真实路径

    搞了个最新的package(支持安卓以及IOS),下载导入到Unity里面就行: 下载链接:Unity+Android PickFile Java代码 package com.zrqz.filebro ...

  7. Qt 之打开系统文件管理器

    打开文件管理器有两种方案: 1.使用 QProcess 调用win系统自带 explorer 程序打开 //获取程序当前目录 QString path = "E:\\VS2015" ...

  8. Android , 打开系统播放器

    需要配上权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> bu ...

  9. Qt Android 调用系统文件管理

    1.了解 使用JNI扩展Qt应用 参考<Qt on Android核心编程>15章 源码https://download.csdn.net/download/dinosaurx/10149 ...

  10. Android打开系统自带文件管理器,选择指定类型的文件

    //调用系统文件管理器打开指定路径目录Intent intent = new Intent(Intent.ACTION_GET_CONTENT);//intent.setDataAndType(Uri ...

最新文章

  1. php读取西门子plc_基于Socket访问西门子PLC系列教程(二)
  2. Unity 4.x游戏开发技巧集锦(内部资料)
  3. 推荐系统数据集大列表
  4. 工控安全要避开传统IT安全思路的几个“暗坑”
  5. Tree命令安装和使用
  6. kettle从入门到精通_数据分析师的全景职业规划,入门、转行都先看这篇
  7. angular 点击事件阻止冒泡及默认行为
  8. sparkStreaming+kafka SparkException: java.nio.channels.ClosedChannelException异常报错
  9. 想要入坑机器学习?这是MIT在读博士的AI心得
  10. 记一次反制追踪溯本求源
  11. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.1 运用试错法
  12. 毕业论文:vrml设计的虚拟校园
  13. 如何用c语言强制删除文件夹,c++ - 使用C ++在Windows上强制删除文件 - 堆栈内存溢出...
  14. 硬件模拟大师_用机器人做咖啡,“智咖大师”这样升级新零售
  15. iOS开发通过微信学习hijack(一)函数劫持
  16. Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Cou
  17. processing实现图像碎片化
  18. Idea新建项目名后出现中括号别名
  19. 基于51单片机---遥控灯
  20. 广义线性模型 1统计学导论【作业】

热门文章

  1. 关于getdate()的不同的日期格式
  2. 保研复习笔记:概率论与数理统计
  3. 架构设计:网络附属存储NAS,块存储EBS与对象存储OSS的比较以及选用
  4. 关于Gephi的安装的一些问题
  5. java使字符串转二维码
  6. 记录一次 AGP 调研过程中的思考,我从一个事故搞出了一个故事!
  7. 【腾讯Bugly干货分享】美团大众点评 Hybrid 化建设
  8. Office软件Android无法登录,office mobile(安卓版)无法使用
  9. (71)--爬取拉勾网招聘信息
  10. SAP - 采购价格确定 ①