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

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

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

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

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

       知识点一、 File 类的使用

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

       知识点二、调用方法说明  

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

       先贴上效果图如下:

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

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

Java代码

public class CopyOfFileChooserActivity extends Activity {      private String mSdcardRootPath ; //sdcard 根路径   private String mLastFilePath ;  //当前显示的路径      private ArrayList 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() ;     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。

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

更多相关文章

  1. Android复制assets目录下的文件到另一个目录
  2. Android(安卓)UI控件学习(一)——拖动条
  3. Android之反编译技术
  4. 关于Android工程从eclipse迁移至android studio的过程
  5. resources的使用
  6. Android(安卓)NDK 开发入门环境配置与小例子
  7. Android中使用SAX对XMl文件进行解析
  8. Android(安卓)性能监测工具,优化内存、卡顿、耗电、APK的方法
  9. 【usb存储挂载】android6.0固定usb存储挂载路径

随机推荐

  1. Tegra Android(安卓)Development Pack |
  2. RelativeLayout用到的一些重要的属性:
  3. Android入门:ImageView介绍
  4. shape的使用
  5. Android(安卓)之 Gallery画廊用法
  6. Android(安卓)Activity 常用功能设置(全屏
  7. Binder解析
  8. Android(安卓)MediaRecorder录制音频
  9. 博客技术资料整理
  10. android shape的用法总结