Android怎么实现文件资源管理器
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇"Android怎么实现文件资源管理器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这
千家信息网最后更新 2025年01月23日Android怎么实现文件资源管理器
这篇"Android怎么实现文件资源管理器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android怎么实现文件资源管理器"文章吧。
先做需求分析(实现的功能):
1.ListView开始显示sdcard目录下的子目录和文件。
2.点击文件,Toast显示"点击的是文件"
3.点击目录,进入子目录,显示子目录下的子目录和文件。
4.back键回退到上层目录。
5.异常情况处理:
5.1如果sdcard没有插入,则不显示列表,且提示用户应该插入sdcard后操作
5.2不允许进入sdcard的上层目录
下面开始实现:
布局有两个:
1.主布局:file_list.xml
布局很简单,就是放置了一个ListView控件,这里要注意的是,ListView标签下不能再放入其他的子控件。内容是通过子布局和Adapter来显示的。
2.ListView中的子布局file_list_item.xml
子布局也很简单,就是在水平方向上左边显示一个图标,用来显示文件夹或文件图标,右边显示文件名。
3.Activity代码(功能点写在注释中)
public class FileExplorerActivity extends Activity { //Adapter中ICON和Filename键值对常量 private static final String ICON = "icon"; private static final String FILENAME = "filename"; private TextView currentTv;//ListView上显示当前路径的TextView private ListView fileLv;//文件列表显示的ListView SimpleAdapter adapter;//适配器 private List> data;//填充的数据 private File root;//文件夹根节点 private File[] currentFiles; //根节点下的所有文件(包括文件夹) private File currentPath;//记录当前节点 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_explorer); currentTv = (TextView)findViewById(R.id.currentTv); fileLv = (ListView)findViewById(R.id.fileLv); //得到根节点root -->/mnt/sdcard root = getFileSystemRoot(); //得到第一屏的信息 if(root != null){ //从/mnt/sdcard下得到文件列表 data = getFileListFromSdcard(root); }else{ //如果没有挂载sdcard,则提示用户 data = new ArrayList >(); HashMap map = new HashMap (); map.put(ICON, R.drawable.none); map.put(FILENAME, "逗我玩啊,插卡啊"); data.add(map); } //创建Adapater adapter = new SimpleAdapter( this, data, R.layout.file_list_item, new String[]{ICON, FILENAME}, new int[]{R.id.icon, R.id.filename}); fileLv.setAdapter(adapter); //绑定事件 fileLv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { //点击listview 项时,如果是目录,则进入下一层次,如果是文件,不做处理 File currentPosFile = currentFiles[position]; if(currentPosFile.isDirectory()){ getFileListFromSdcard(currentPosFile); }else{ Toast.makeText(FileExplorerActivity.this, "您点击的是文件夹", Toast.LENGTH_LONG).show(); } } }); } /** * 拦截back键返回 * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(KeyEvent.KEYCODE_BACK == keyCode){ File parentFile = currentPath.getParentFile(); //不能超过最顶层 try { if(parentFile.getCanonicalPath().toString().equals("/mnt")){ Toast.makeText(this, "别按了,到家了", Toast.LENGTH_LONG).show(); return true; }else{ getFileListFromSdcard(parentFile); } } catch (IOException e) { e.printStackTrace(); } } return super.onKeyDown(keyCode, event); } private File getFileSystemRoot() { //首先得到Sd卡是否加载了 if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){ //得到sd卡路径 root --> /mnt/sdcard root = Environment.getExternalStorageDirectory(); }else{ Toast.makeText(this, "逗我玩啊,插卡啊", Toast.LENGTH_LONG).show(); } return root; } /** * 得到Sdcard中的文件列表 * @return */ private List > getFileListFromSdcard(File root) { try { currentPath = root; currentTv.setText(root.getCanonicalPath().toString()); } catch (IOException e) { e.printStackTrace(); } List > list = new ArrayList >(); currentFiles = root.listFiles();//列出当前目录下的所有文件和目录 for(File f : currentFiles){ HashMap map = new HashMap (); String fileName = f.getName(); int icon; if(f.isDirectory()){ icon = R.drawable.dir; map.put(ICON, icon); }else if(f.isFile()){ icon = R.drawable.file; map.put(ICON, icon); } map.put(FILENAME, fileName); list.add(map); } //把原来的data list清空,然后把list放进去,再通知adapter if(data != null){ data.clear(); data.addAll(list); adapter.notifyDataSetChanged(); } return list; }}
运行效果:
功能展望:
以上代码是通过精简功能达到的,如果要增加以下功能也是相当之简单的:
1.文件夹和文件的删除功能
2.文件夹和文件的重命名功能
3.文件的分类调用App查看功能
4.文件详细信息显示功能
以上就是关于"Android怎么实现文件资源管理器"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
文件
功能
目录
内容
布局
文件夹
子目
子目录
节点
资源
资源管理
管理
就是
上层
代码
信息
图标
控件
文章
用户
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全奖申请
软件开发怎么众筹
免费心血管数据库
软件开发项目背景
阿克苏塔式服务器维保费用
welink私人服务器
制造执行系统软件开发企业
邢台网络安全公司
现在软件开发有那些
软件开发与设计体系
asp的web服务器
网络安全与法律法规
网络安全知识进校园讲座内容
网络安全和数字货币双概念龙头
数据库迁移简历
数据库和系统如何连接起来的
网络安全面试官说我网上抄的
计算机网络技术士官主要干什么
全国卫生行业网络安全大赛
uc网络安全检查在哪里关
网络安全问题监管
专门的蛋白质数据库
java一般都用什么数据库
房山区数据网络技术口碑推荐
现在软件开发有那些
软件开发人工成本怎么结转
网络安全倡议的征文
高档服务器包装哪家好
软件开发汇报
西安中恺网络技术