android 文件选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 文件选择相关的知识,希望对你有一定的参考价值。
如何 调用系统的文件浏览器,能够选择 任何文件,返回文件路径+文件名。如何实现?
private void openFileBrowse()Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");// 文件类型
Intent wrapperIntent = Intent.createChooser(intent, "打开方式");
startActivityForResult(wrapperIntent, 0);
protected void onActivityResult(int requestCode, int resultCode,
Intent intent)
// String path;
if (resultCode == RESULT_OK)
if (requestCode == 0)
if (intent == null)
Toast.makeText(this, "未选择任何文件", Toast.LENGTH_LONG).show();
return;
Uri uri = intent.getData();
if (uri == null)
Toast.makeText(this, "未选择任何文件", Toast.LENGTH_LONG).show();
return;
String scheme = uri.getScheme();
//可能是content,file等等.需要判断其是不是file
如果不是调用文件管理器,可能返回其他
if (scheme != null
&& ("file".endsWith(scheme.toLowerCase()))
String path = uri.getPath();//文件路径
追问
能选择文件,并返回文件名,打开一个窗口上面有些选择按钮,音乐,图片,等
但文件查看器 有些手机找不到,没显示,有些能找到。能不能直接打开文件查看器。
只能说这个手机没装有文件管理器.不能够直接打开文件查看器的,因为图片查看器等action 和文件查看器的action是一样的.可以Intent wrapperIntent = Intent.createChooser(intent, "请选择文件查看器");除非自己实现文件查看器.
参考技术A 自己写一个啊 参考技术B 百度上面都有android自定义控件之文件选择
参考技术A 不多说,先上图:列举当前目录下的所有文件,如果是选择目录,则不显示文件,如果是选择文件,则需要显示文件。
新建目录,就是在当前路径下新建目录,同时新建后的目录要能够及时显示在文件列表中。
需要读写权限,添加第三方权限请求库:
使用:
DialogFragment与Dialog有一些不同的地方,其中show方法需要传入FragmentManager
另外需在onCreateVie方法初始化布局,以及获取到控件
另外就是RecycleView,之所以采用RecycleView,是因为发现如果用ListView,内存会不断增加,很难降下来。
其中CommonAdapter继承自BaseAdapter,是通用的Adapter,兼容ListView:
这一部分逻辑有FileProvider类完成; 这里需要注意的是,有些手机不支持读取根目录,所以改为读取"/mnt/"作为根目录就行读取。
另外跳转目录都是改变当前路径,然后再刷新数据。
同时在其内部定义了FileData类:
文件选择,可以通过当前路径路径以及列表索引来唯一确定路径;都是,当跳转目录后,索引应该重置。
这里采用WeakReference记录选择的控件,但选择其他目录或者文件时,之前的控件需要重置一下状态。
https://github.com/xiaoyifan6/videocreator
该源码主要用于图片合成gif或者视频,其中文件选择弹窗是自己写的。感觉这个弹出应该有许多地方可以用到,所以写下这篇文章,方便以后参考查看。
以上是关于android 文件选择的主要内容,如果未能解决你的问题,请参考以下文章
Android文件选择器 自动申请存储权限 适配安卓 4.4 ~ 13支持无root权限访问和操作Android/data和Android/obb目录