手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android 文件选择器详解及实例代码
Android 文件选择器详解及实例代码
摘要:本文给大家讲解下Android文件选择器的使用。实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDial...

本文给大家讲解下Android文件选择器的使用。实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件。

此实例的实现过程很简单,这样可以让大家快速的熟悉Android文件选择器,提高开发效率。

网上曾经见到过一个关于文件选择器的实例,很多人都看过,本实例是根据它修改而成的,但更容易理解,效率也更高,另外,本实例有自己的特点:

1、监听了用户按下Back键的事件,使其返回上一层目录。

2、针对不同的文件类型(文件vs文件夹 , 目标文件vs其他文件)做了特殊处理。

知识点一、 File 类的使用

文件选择器的主要功能是:浏览文件文件夹、文件类型等;都是通过Java File类来实现的。

知识点二、调用方法说明

使用了startActivityForResult()发起调用以及onActivityResult()方法接收回调后的信息。

先贴上效果图如下:

Android 文件选择器详解及实例代码1

其他的也没什么好说了,大家看看代码注释吧,很简单。

FileChooserActivity.java 实现文件选择的类 。

Java代码

public class CopyOfFileChooserActivity extends Activity { private String mSdcardRootPath ; //sdcard 根路径 private String mLastFilePath ; //当前显示的路径 private ArrayList<FileInfo> mFileLists ; private FileChooserAdapter mAdatper ; //配置适配器 private void setGridViewAdapter(String filePath) { updateFileItems(filePath); mAdatper = new FileChooserAdapter(this , mFileLists); mGridView.setAdapter(mAdatper); } //根据路径更新数据,并且通知Adatper数据改变 private void updateFileItems(String filePath) { mLastFilePath = filePath ; mTvPath.setText(mLastFilePath); if(mFileLists == null) mFileLists = new ArrayList<FileInfo>() ; if(!mFileLists.isEmpty()) mFileLists.clear() ; File[] files = folderScan(filePath); if(files == null) return ; for (int i = 0; i < files.length; i++) { if(files[i].isHidden()) // 不显示隐藏文件 continue ; String fileAbsolutePath = files[i].getAbsolutePath() ; String fileName = files[i].getName(); boolean isDirectory = false ; if (files[i].isDirectory()){ isDirectory = true ; } FileInfo fileInfo = new FileInfo(fileAbsolutePath , fileName , isDirectory) ; //添加至列表 mFileLists.add(fileInfo); } //When first enter , the object of mAdatper don't initialized if(mAdatper != null) mAdatper.notifyDataSetChanged(); //重新刷新 } //获得当前路径的所有文件 private File[] folderScan(String path) { File file = new File(path); File[] files = file.listFiles(); return files; } private AdapterView.OnItemClickListener mItemClickListener = new OnItemClickListener() { public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { FileInfo fileInfo = (FileInfo)(((FileChooserAdapter)adapterView.getAdapter()).getItem(position)); if(fileInfo.isDirectory()) //点击项为文件夹, 显示该文件夹下所有文件 updateFileItems(fileInfo.getFilePath()) ; else if(fileInfo.isPPTFile()){ //是ppt文件 , 则将该路径通知给调用者 Intent intent = new Intent(); intent.putExtra(EXTRA_FILE_CHOOSER, fileInfo.getFilePath()); setResult(RESULT_OK , intent); finish(); } else { //其他文件..... toast(getText(R.string.open_file_error_format)); } } }; public boolean onKeyDown(int keyCode , KeyEvent event){ if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK){ backProcess(); return true ; } return super.onKeyDown(keyCode, event); } //返回上一层目录的操作 public void backProcess(){ //判断当前路径是不是sdcard路径 , 如果不是,则返回到上一层。 if (!mLastFilePath.equals(mSdcardRootPath)) { File thisFile = new File(mLastFilePath); String parentFilePath = thisFile.getParent(); updateFileItems(parentFilePath); } else { //是sdcard路径 ,直接结束 setResult(RESULT_CANCELED); finish(); } } }

此实例的界面稍显简陋,不过大家可以在此基础上完善,添加其他功能。本实例代码下载地址:

http://download.csdn.net/detail/qinjuning/4825392。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

【Android 文件选择器详解及实例代码】相关文章:

Android 文件操作方法

Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码

Android 4.1源码编译找不到资源文件解决办法

解析Android资源文件及他们的读取方法详解

Android使用Pull解析器解析xml文件的实现代码

Android从服务器获取图片的实例方法

android ListView和GridView拖拽移位实现代码

Android三种菜单实例分析

Android 有道词典的简单实现方法介绍

Android源码中的目录结构详解

精品推荐
分类导航