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 ...
随机推荐
- 静态库制作.a .framework
一.静态库 .a 制作 1.新建一个Cocoa Touch Static Library 2.往里面添加文件,或者自己新建 3.添加一个Headers Phase ...
- rsync 参数断点续传
断点续传是使用大写P参数,-P这个参数是综合了--partial --progress两个参数 rsync -avzP /home/hadoop/jdk1..0_73.tar.gz root@10.2 ...
- C#基础知识点
一.方法(结构.数组.冒泡排序.3个参数重载) 1将string转换为int类型 Convert.ToInt32(); int.Parse() ; int.TryParse()三种方式. 2 结构:可 ...
- 【python】os模块
1.os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. 2.os.getcwd() 函数得到当前工作目录,即当前Py ...
- ios9和ios10的新特性
昨天面试了一个做ios开发的公司,其中面试官问我最新的ios系统版本是多少,以及它的特性是什么?由于自己是初学者,所以对这些没有关注过.今天特地搜索了一下关于ios9和ios10的新特性,并整理了一下 ...
- 【缓存】利用Cache防止同一帐号重复登录
需求概要 对于B/S应用系统中客户经常会提出同一帐号不能重复登录的需求,就是说,用某一帐号登录系统后,在系统不超时的情况下,任何人都不能再用目前已登录的帐号登录系统.包括我目前的项目中同样有这一需求. ...
- C# 委托:把方法组合到一个数组中使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- zencart安装第三步出现空白
问题描述:在安装zencart时,在第三步同意协议,然后点击下一步时,页面经过漫长的等待后就显示空白. 解决方法:打开php.ini,将max_execution_time = 30 -> ma ...
- 关于Ajax跨域
本人因工作需求,编写了一个测试页面,在页面填写完信息之后去向一个站点请求数据,然后返回结果!一开始是直接用Ajax在脚本中去访问,没有大碍(因为目标地址是本机上的一个网站),但是当站点去外部的网站时, ...
- [leetcode]_Climbing Stairs
我敢保证这道题是在今早蹲厕所的时候突然冒出的解法.第一次接触DP题,我好伟大啊啊啊~ 题目:一个N阶的梯子,一次能够走1步或者2步,问有多少种走法. 解法:原始DP问题. 思路: 1.if N == ...