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 ...
随机推荐
- Nodejs文件服务器
最近一直在忙于一个比较大的项目,在项目中需要有个文件服务器来支持.老鸟们建议我去用NodeJs来实现,我在接手这个项目之前其实并不了解NodeJs,但是一直想去了解.借着这个机会好好去学习一下.下面是 ...
- grunt 快速入门
Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本号的 No ...
- $watch 和 $apply
1.当你使用 ng-model, ng-repeat 等等来绑定一个元素的值时, AngularJS 为那个值创建了一个 $watch,只要这个值在 AngularJS 的范围内有任何改变,所有的地方 ...
- sessionStorage html5客户端本地存储之sessionStorage及storage事件
可以看一下<JavaScript本地存储实践(html5的localStorage和ie的userData)>sessionStorage和上文中提到的localStorage非常相识,方 ...
- OpenLDAP 安装及配置 笔记
首先下载 OpenLdap(Ldap服务器) 和 LdapAdmin(客户端) 两个软件 OpenLDAPforWindows_2.4.39.part1.rar OpenLDAPforWindows_ ...
- ct任务添加与中控机批量后台操作
ct 任务nohup sh ./bin/start.sh </dev/null >/dev/null 2>&1 & 中控机批量 for h in `get_hosts ...
- 何时使用 Em 与 Rem
原文 http://www.w3cplus.com/css/when-to-use-em-vs-rem.html 你可能已经很熟练使用这两个灵活的单位,但你可能不完全了解何时使用rem,何时使用 ...
- MFC创建对话框组件对应变量并进行设置值(VS2010)
m_path = strFolderPath; UpdateData(FALSE);
- ref和out的区别,值类型和引用类型的使用
今天刚刚明白ref和out的区别,只限于个人理解如有不同请赐教,谢谢 首先我感觉ref和out是针对于值类型来说,以前一直认为是针对于引用类型看下面的一段代码 1.首先结果 i=0:ints[0]=0 ...
- JS焦点图 上下翻动 支持IE6
<div class="slider"> <ul class="num" id="homePushName"> &l ...