文档章节

android:查找手机所有文件,进行浏览(文件浏览器)(13)

f
 flyqilong
发布于 2016/01/24 19:22
字数 595
阅读 20
收藏 0
//查找手机所有文件,进行浏览(文件浏览器)
public class MainActivity extends Activity {
	private ListView listview;
	private TextView showPath;
	private SimpleAdapter adapter;
	private File file;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.listview = (ListView) this.findViewById(R.id.listview);
		this.showPath = (TextView) this.findViewById(R.id.showPath);
		//获取sd卡中的根路径
		String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
		file = new File(sdPath);
		findFileFillListview(file);//查找文件的方法

	}

	public void findFileFillListview(File file) {
		final File[] files = file.listFiles();
		// 准备数据
		List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
		for (int i = 0; i < files.length; i++) {
			Map<String, Object> fileMap = new HashMap<String, Object>();
			if (files[i].isDirectory()) {
				fileMap.put("fileImage", R.drawable.folder);// 目录的图标
				fileMap.put("filename", files[i].getName());
			}
			if (files[i].isFile()) {
				fileMap.put("fileImage", R.drawable.file);// 文件的图标
				fileMap.put("filename", files[i].getName());// 这句有重复,可以把它提到外面去
			}
			// fileMap.put("filename", files[i].getName());
			data.add(fileMap);
		}
		//适配器关联数据
		adapter = new SimpleAdapter(this, data, R.layout.listviewitem,
				new String[] { "fileImage", "filename" }, new int[] {
						R.id.listview_image, R.id.listview_path });
		listview.setAdapter(adapter);
		showPath.setText(file.getAbsolutePath());
		listview.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// 点击可以查看文件,如果是目录,再进行判断
				if (files[position].isDirectory()) {
					File[] filesub = files[position].listFiles();
					if (filesub.length == 0 || filesub == null) {
						Toast.makeText(MainActivity.this, "该目录为空!", 200).show();
					} else {
						findFileFillListview(files[position]);
					}
				} else {// 如果是文件进行打开浏览
					Intent intent = new Intent();
					intent.setAction(Intent.ACTION_VIEW);
					String extension = MimeTypeMap
							.getFileExtensionFromUrl(files[position]
									.getAbsolutePath());
									// 获取文件的扩展名
					if (extension.equals("jpg") || extension.equals("png")
							|| extension.equals("png")
							|| extension.equals("bmp")
							|| extension.equals("gif")
							|| extension.equals("jpeg")) {
						intent.setDataAndType(Uri.fromFile(files[position]),
								"image/*");

					} else if (extension.equals("mp3")
							|| extension.equals("png")
							|| extension.equals("mp4")
							|| extension.equals("mpg")
							|| extension.equals("avi")
							|| extension.equals("3gp")
							|| extension.equals("mpeg")) {
						intent.setDataAndType(Uri.fromFile(files[position]),
								"video/*");
					} else if (extension.equals("au")
							|| extension.equals("mid")) {
						intent.setDataAndType(Uri.fromFile(files[position]),
								"video/*");

					} else if (extension.equals("txt")
							|| extension.equals("xml")
							|| extension.equals("log")
							|| extension.equals("html")) {
						intent.setDataAndType(Uri.fromFile(files[position]),
								"text/*");
					} else {
						intent.setDataAndType(Uri.fromFile(files[position]),
								"text/*");
					}
					startActivity(intent);
				}
			}
		});
	}

	public void checkButton(View view) {
		if (!file.getAbsoluteFile().equals(Environment.getExternalStorageDirectory().getAbsolutePath())) {
			findFileFillListview(file.getParentFile());
			// 该按钮判断如果不等于绝对路径,获取父文件目录
		}
		/*
		 * switch (view.getId()) { case R.id.homeButtom: if
		 * (!file.getAbsoluteFile().equals(FileUtils.getSDCRRDDIR())) {
		 * findFileFillListview(file.getParentFile()); } break;
		 * 
		 * }
		 */
	}
}
//主布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/showPath"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#000"
        android:textColor="#fff"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/homeButtom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="checkButton"
        android:src="@drawable/home" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

//listview的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/listview_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/listview_path"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#88000000"
        android:textColor="#fff"
        android:textSize="20sp" />

</LinearLayout>


© 著作权归作者所有

f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
私信 提问
Android 中的微型云

云计算至少需要两个组件:运行在可移植设备上的客户机软件和通常运行在网络服务器上的服务器软件。本文将创建一个模拟网络服务器的基于 Android 的服务,从而以一种独特的、新颖的方式提高本...

红薯
2009/12/16
1K
1
取之有道——巧用Root权限 启动其他APP中的Activity

这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法。 首先说一下这样做的目的:最近博主在攻克一个技术难点,就是搞定某些三方系统中,对于应用权限的限制。为此给出用户指导,引...

APP开发经验谈
01/28
0
0
Android系统操作的50个实用技巧

今天为大家整理的是Android系统操作的50个实用技巧,有利于大家更好的学习Sundy_android高级课程。请意这些技巧和秘籍大部分针对目前最主流的Android2.1 及以上系统,不过绝大部分在其他版本...

android技术开发
2013/07/25
358
1
推荐 Web 开发人员应有的免费 Android 应用

作为一个 Web 开发人员,有时候也需要关注一下你的网站在移动设备上的表现,或者需要通过移动设备来管理网站。下面为你推荐 7 款免费的 Android 应用,有助于你更好的工作。 1. Firefox 4 B...

红薯
2011/05/06
2.7K
2
10 款优秀的 Android 文件管理器

文件管理器是管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件。所有文件管理器都提供了基本的操作如创建、打开、查看、编辑、移动和删除文件。许多Android文件管理器还...

红薯
2011/09/25
89.5K
7

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
39分钟前
2
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
53分钟前
7
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
今天
1
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
今天
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部