Android-简单的sdcard文件浏览
功能:能够浏览手机里面的文件夹和文件,代码灰常简单
先看布局
<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"
tools:context="com.example.fanlei.myservicedemo.FilePathActivity"> <android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#000">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="返回上一级"/>
</android.support.v7.widget.Toolbar>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
主函数
package com.example.fanlei.myservicedemo; import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.List; public class FilePathActivity extends ActionBarActivity { private ListView listView;
private File currentParent; //记录父文件夹
private File[] currentFiles; //记录当前路径下的所有文件的文件数组
private List<String> fileName;//文件或文件夹名字 private ArrayAdapter arrayAdapter;
private Button button; @TargetApi(Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_path); //判断一下有木有sdcard卡
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
initView();
initData();
initEvent();
}else {
Toast.makeText(this,"无sdcard卡",Toast.LENGTH_LONG).show();
} } private void initView(){
listView = (ListView) findViewById(R.id.listView);
button = (Button) findViewById(R.id.button);
} private void initData(){
currentParent = Environment.getExternalStorageDirectory();
currentFiles = currentParent.listFiles();
fileName = new ArrayList<>();
List<String> temp = filesToFileName(currentFiles);
fileName.addAll(temp);
arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,fileName);
listView.setAdapter(arrayAdapter);
} private void initEvent(){
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (!currentFiles[position].isFile()){
File[] temp = currentFiles[position].listFiles();
if (temp == null || temp.length == 0){
Toast.makeText(FilePathActivity.this,"该文件下已无文件",Toast.LENGTH_LONG).show();
}else {
currentParent = currentFiles[position];
currentFiles = temp;
fileName.clear();
fileName.addAll(filesToFileName(currentFiles));
arrayAdapter.notifyDataSetChanged();
}
}
}
});
//返回键
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentParent.getPath().equals(Environment.getExternalStorageDirectory().getPath())){
currentParent = currentParent.getParentFile();
currentFiles = currentParent.listFiles();
fileName.clear();
fileName.addAll(filesToFileName(currentFiles));
arrayAdapter.notifyDataSetChanged();
}
}
});
}
//返回一个File的文件名的数组
private List<String> filesToFileName(File[] files){
List<String> fileName = new ArrayList<>();
for (int i = 0;i < files.length;i++){
if (!files[i].getName().substring(0,1).equals(".")){ //这个地方我把“.”开头的文件夹不让其显示
fileName.add(files[i].getName());
}
}
return fileName;
}
}
Android-简单的sdcard文件浏览的更多相关文章
- Android简单介绍SharedPreference,内部文件,sdcard数据存储
SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared_prefs文件夹中 使用方式 创建对象的方式有三种 Context 的 getShar ...
- 【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,而且在AVD中浏览sdcard的文件
首先.实现这一切的大前提是.你的AVD安卓模拟器,在启动之前.有设置好sdcard的大小,例如以下图.同一时候,你的AVD安卓模拟器,要处于启动状态.否则无法运行例如以下的操作. 这里以<[An ...
- Android简单文件浏览器源代码 (转)
Android简单文件浏览器源代码 (转) activity_main .xml <LinearLayout xmlns:android="http://schemas.android ...
- Android 5.0+删除Sdcard文件
在Android5.0往后的平台上,你想通过单纯的调用File.delete()或着ContentResolver.delete()来删除Sdcard上的文件会删除失败.前者提示没有权限,后者仅仅删除 ...
- Android中使用SDcard进行文件的读取
来自:http://www.cnblogs.com/greatverve/archive/2012/01/13/android-SDcard.html 平时我们需要在手机上面存储想音频,视频等等的大文 ...
- Android MTP 文件浏览Demo
本apk实现了MTP文件浏览的简单功能. 通过Demo apk能够浏览连接到当前设备上的MTP设备上的文件. Demo路径:http://download.csdn.net/detail/sailin ...
- Android学习2--项目文件列表简单分析
使用Eclipse创建的默认项目文件列表如下: src:src目录是Android工程的源程序目录,该目录用于存放Java项目的源代码 gen:gen目录存放所有自动生成的文件,在这个目录中最关键的文 ...
- android 读取SD卡文件
SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件.因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android ...
- android 中获取视频文件的缩略图(非原创)
在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...
随机推荐
- QTP动态加载对象库
Public Function AddObjectRepository(path) On Error Resume Next Dim pos, repath If instr(path,". ...
- mybatis-generator 代码自动生成工具
今天来介绍下怎么用mybatis-gennerator插件自动生成mybatis所需要的dao.bean.mapper xml文件,这样我们可以节省一部分精力,把精力放在业务逻辑上. 之前看过很多文章 ...
- Android基础总结(7)——异步消息处理
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
- @media screen解决移动web开发的多分辨率问题
当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...
- IE 不兼容的几个js问题及解决方法
IE 不兼容的几个js问题及解决方法 1 Table的问题 在动态新增tr或者td时,createElecment() 一般用appendChild();都不生效,解决办法是用新增tbody, 如 ...
- Solaris引导和关闭
OpenBoot PROM简称OBP,相当于PC的BIOS,是控制SUN服务器的引导过程.初始化配置某些硬件并提供某些诊断的工具.常见OBP命令 boot boot:从默认设备启动boot -s:从默 ...
- 破解Demo
需要破解的程序界面如下: 需要破解的程序的主要代码如下: void CEasyCrackMeDlg::OnBnClickedButtonOk() { // TODO: 在此添加控件通知处理程序代码 T ...
- POJ C++程序设计 编程题#1 编程作业—运算符重载
编程题 #2 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的MyIn ...
- PHP和AJAX笔记汇总
AJAX简介AJAX = Asynchronous JavaScript And XML(异步 JavaScript 及 XML)AJAX 是 Asynchronous JavaScript And ...