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

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

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

     本文给大家讲解下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<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 文件选择器详解及实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1147941.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存