`

Android中文件选择器的实现

 
阅读更多


转载请注明出处:http://blog.csdn.net/qinjuning

 


今天给大家分享下文件选择器的作用 , 具体就是获取用户在在SD卡选中的文件/文件夹路径 ,类似于C#中

OpenFileDialog控件(对C#的一站式开发还是念念不忘)。功能实现起来比较简单,主要是帮助大家节省开发时间。

网上流传较广的一个成品如下 <[Android实例]文件选择器>, 本文也是根据上面的成品修改而成,使其更易

理解,效率更高。除此之外,主要特色有:

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

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

知识点一、 File 类的使用

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

关于File类的使用,请参考如下博客:

<<来自java文档 File类>>

<<JavaFile类>>

 

 

 

 


知识点二、调用方法说明

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

截图如下:




其他的也没什么好说了,大家看看代码注释吧~~ so easy - - 。


FileChooserActivity.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/4908609 (源代码下载)





 

分享到:
评论

相关推荐

    Android中文件选择器的实现(代码)

    下面是一个简单的文件选择器实现步骤: 1. **创建UI**:布局文件中包含一个`RecyclerView`,用于展示文件和目录。每个条目可以是一个自定义的`ViewHolder`,显示文件名、大小、类型等。 2. **数据模型**:创建一个...

    Android 文件选择器(支持选择u盘).zip

    本项目“Android 文件选择器(支持选择u盘)”提供了一个完整的解决方案,使得用户能够在Android设备上方便地浏览、选择SD卡、内置存储以及连接的USB U盘中的文件和文件夹。 首先,我们来深入理解这个项目的核心...

    Android文件上传,文件选择器,多选

    在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...

    Android文件选择器

    标题“Android文件选择器”表明我们讨论的是一个自定义实现的解决方案,用于解决Android系统原生文件选择器可能出现的问题,尤其是获取文件路径的困难。 在Android原生API中,尽管提供了Intent来启动系统默认的文件...

    android文件选择器

    本项目"android文件选择器"是专为Android平台设计的一个文件选择工具,采用PopupWindow实现,提供了一种简洁且直观的方式来让用户与文件系统交互。 PopupWindow是Android SDK中的一个类,它能够创建一个浮动窗口,...

    android图片/视频文件选择器

    在Android应用开发中,"android图片/视频文件选择器"是一个至关重要的组件,它允许用户在设备上方便地选择图片和视频。这个特定的选择器具备多种功能,包括多选、单选模式,以及内置的拍摄和裁剪工具,极大地提升了...

    Android简易文件选择器

    在Android开发中,有时我们需要为用户提供一种方便的方式来选择设备上的文件,这通常涉及到创建自定义的文件选择器。"Android简易文件选择器"是一个这样的工具,它具备多选、反选和全选功能,旨在优化用户体验并解决...

    Android 多媒体文件选择器

    总之,"Android 多媒体文件选择器" 提供了一个高效、灵活的选择工具,可以帮助开发者快速实现多媒体选择功能,同时具备与社交网络集成的能力,极大地丰富了用户体验。通过理解和定制这个项目,开发者可以构建出更加...

    android-doc-picker,一个简单易用的文档选择器android库。从设备中选择任何文档,如pdf、ppt、文本、word或媒体文件.zip

    4. 显示选择器:调用startPicker方法启动文档选择界面。 5. 处理结果:在回调中获取用户选择的文件路径,并进行后续操作。 四、代码示例 ```java DocPicker picker = new DocPicker.Builder(this) ....

    Android地名选择器 全国省市区选择器 城市选择 区县选择

    总结来说,"Android地名选择器 全国省市区选择器 城市选择 区县选择"是一个实现中国地理位置选择的Android组件。它涉及UI设计、数据结构、事件处理、搜索功能等多个方面,开发者需要综合运用Android的各种技术来实现...

    Android高级应用源码-文件选择器.rar

    下面将详细探讨Android文件选择器的相关知识点。 1. **Intent和ACTION_PICK** Android中的文件选择通常通过Intent来启动,使用`ACTION_PICK`或者`ACTION_GET_CONTENT`动作。例如: ```java Intent intent = new ...

    Android文件目录选择器

    使用ContentResolver与Android系统的ContentProvider进行交互,获取用户在文件选择器中选择的目录URI。通过`takePersistableUriPermission()`方法,可以长期保留对选定目录的访问权限。 4. **TreeUri**: 用户...

    Android自定义日期选择器源码

    在Android开发中,系统默认的日期和时间选择器虽然实用,但往往无法满足所有场景的需求。因此,开发者经常需要自定义日期选择器来提供更符合应用风格或特定功能的交互体验。这篇内容将深入探讨如何在Android中创建一...

    android 时间选择器

    在Android开发中,时间选择器(DatePicker)是一个常见的组件,用于让用户方便地选取日期或时间。本项目仿照苹果iOS的界面设计,提供了一个自定义的时间选择器,允许开发者进行高度自定义,如修改背景、字体等样式。...

    android实现文件管理器

    可以使用`Intent`来打开一个系统提供的文件选择器,让用户选择特定的文件或目录。`ACTION_GET_CONTENT`和`ACTION_OPEN_DOCUMENT`意图可以实现此功能。 ```java Intent intent = new Intent(Intent.ACTION_GET_...

    qt for android图片选择器

    3. **图片选择器实现**: 要实现图片选择器,通常需要启动一个 Intent,如 ACTION_PICK 或 ACTION_GET_CONTENT,这样用户可以选择一张图片。在 Java 代码中创建这样的 Intent,然后使用 QAndroidJniObject 将其转换...

    android滚轮选择器

    以`androidWheelView-master`为例,这是一个开源项目,它提供了一个自定义的滚轮选择器实现。项目可能包含了以下关键部分: 1. `WheelView`类:这是自定义滚轮选择器的核心类,它实现了滚轮的绘制、滚动逻辑以及...

    Android代码-文件选择器.zip

    【标题】"Android代码-文件选择器.zip"指的是一个包含Android平台上实现文件选择功能的代码资源包。在Android开发中,文件选择器是用户界面的一个重要组成部分,它允许用户浏览和选择存储在设备上的文件,如图片、...

    Android文件管理器

    以下是关于"Android文件管理器"的相关知识点: 1. **文件操作**: - **创建文件**:用户可以通过文件管理器创建新的文本文件、图片文件或任何其他类型的文件。这通常涉及到选择文件类型、输入文件名并指定保存位置...

Global site tag (gtag.js) - Google Analytics