public class GridViewFile extends Activity implementsView.OnClickListener {privateContext context;privateTextView tv_title, textView;privateGridView listView;private final String MUSIC_PATH = "/";//记录当前路径下 的所有文件的数组

File currentParent;//记录当前路径下的所有文件的文件数组

File[] currentFiles;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

context= this;

initView();

}public voidinitView() {

findViewById(R.id.public_top_img_close).setOnClickListener(this);

listView=(GridView) findViewById(R.id.gridview);

textView=(TextView) findViewById(R.id.llss);

onLoad();

}public voidonLoad() {

ListSongsName();

}private voidListSongsName() {//获取系统的SD卡目录

File root = newFile(MUSIC_PATH);//如果SD卡存在

if(root.exists()) {

currentParent=root;

currentFiles= root.listFiles();//获取root目录下的所有文件//使用当前陆慕下的全部文件,文件夹来填充ListView

inflateListView(currentFiles);

}//为ListView的列表项的单击事件绑定监视器

listView.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView>parent, View view,int position, longid) {//用户点击了文件,则调用手机已安装软件操作该文件

if(currentFiles[position].isFile()) {

onError(currentFiles[position].getPath()+ "1");

Intent intent=OpenFile.openFile(currentFiles[position]

.getPath());

startActivity(intent);

}else{//获取currentFiles[position]路径下的所有文件

File[] tmp =currentFiles[position].listFiles();if (tmp == null || tmp.length == 0) {

Toast.makeText(GridViewFile.this, "空文件夹!",

Toast.LENGTH_SHORT).show();

}//if

else{//获取用户单击的列表项对应的文件夹,设为当前的父文件夹

currentParent =currentFiles[position];//保存当前文件夹内的全部问价和文件夹

currentFiles =tmp;

inflateListView(currentFiles);

}

}

}

});

}//更新列表

private voidinflateListView(File[] files) {if (files.length == 0)

Toast.makeText(GridViewFile.this, "sd卡不存在", Toast.LENGTH_SHORT)

.show();else{//创建一个List集合,List集合的元素是Map

List> listItems = new ArrayList>();for (int i = 0; i < files.length; i++) {

Map listItem = new HashMap();//如果当前File是文件夹,使用folder图标;否则使用file图标

Log.i("path", files[i].getPath());

Log.i("path", files[i].getName());if(files[i].isDirectory())

listItem.put("icon", R.drawable.file_wenjianjia);//else if(files[i].isFi)

elselistItem.put("icon", R.drawable.file_wenjian1);

listItem.put("fileName", files[i].getName());//添加List项

listItems.add(listItem);

}//创建一个SimpleAdapter

SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,

R.layout.acheshi_item,new String[] { "icon", "fileName"},new int[] { R.id.imageView1, R.id.text_path });//位ListView设置Adpter

listView.setAdapter(simpleAdapter);try{

textView.setText("当前路径为:" +currentParent.getCanonicalPath());

}catch(IOException e) {

e.printStackTrace();

}

}

}

@Overridepublic voidonClick(View v) {

onbey();

}//返回上层菜单

private voidonbey() {try{if (!MUSIC_PATH.equals(currentParent.getCanonicalPath())) {//获取上一层目录

currentParent =currentParent.getParentFile();//列出当前目录下的所有文件

currentFiles =currentParent.listFiles();//再次更新ListView

inflateListView(currentFiles);

}else{new AlertDialog.Builder(this)

.setIcon(R.drawable.ic_launcher)

.setTitle("提示")

.setMessage("确定要退出吗?")

.setPositiveButton("确定",newDialogInterface.OnClickListener() {

@Overridepublic voidonClick(DialogInterface dialog,intwhich) {

finish();

}

})

.setNegativeButton("取消",newDialogInterface.OnClickListener() {

@Overridepublic voidonClick(DialogInterface dialog,intwhich) {

}

}).create().show();

}

}catch(Exception e) {

e.printStackTrace();

}

}public voidonError(Object error) {

Toast.makeText(getApplicationContext(), error+ "", Toast.LENGTH_LONG)

.show();

}protected voidonDestroy() {super.onDestroy();

}

}

android sd卡列目录文件_Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等...相关推荐

  1. 一个mapper接口有多个mapper.xml 文件_MyBatis 源码解析:映射文件的加载与解析(上)

    上一篇我们分析了配置文件的加载与解析过程,本文将继续对映射文件的加载与解析实现进行分析.MyBatis 的映射文件用于配置 SQL 语句.二级缓存,以及结果集映射等,是区别于其它 ORM 框架的主要特 ...

  2. ELF文件的加载和动态链接过程

    本文的目的:大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以 ...

  3. 通过代理Activity模式,以移花接木的方式,加载sd卡目录下的apk界面

    动态加载.插件化开发很重要  当今360手机助手(DroidPlugin),个人开源(VirtualApp).百度DL.携程DynamicAPK都用到了该技术 本例的大概思路是:  1.apk1初始化 ...

  4. 加载SD卡中的SO库

    基本信息 作者:kaedea 项目:android-dynamical-loading JNI与NDK Android中JNI的使用其实就包含了动态加载,APP运行时动态加载.so库并通过JNI调用其 ...

  5. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )

    文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...

  6. Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤

    第一步.先制做一个有我们需要的图片资源的APK 如下图,这里有个about_log.png,我们需要生成apk文件. 生成的apk文件如果你不到项目的文件夹里面去取apk,想通过命令放到手机里面去可以 ...

  7. linux优盘驱动目录,Linux U盘加载阵列卡驱动步骤(.dd或img).doc

    Linux U盘加载阵列卡驱动步骤(.dd或img) 如果没有Linux的机器,可以使用安装光盘的Linux环境:将?U?盘完全慢速格式化,将驱动拷贝到U盘,将U盘插在服务器上,用Linux安装光盘第 ...

  8. cnpm : 无法加载文件_DELL 服务器R230 加载阵列卡驱动安装Server 2012R2操作系统

    第一步:创建SATA接口模式为RIAD,创建RAID1 DELL服务器R230 RIAD1创建后安装Server 2018 R2操作系统. 在做RIAD 1之前需要将SATA接口模式更改为RIAD模式 ...

  9. Android中dex文件的加载与优化流程

    目录 1.dex文件分析...1 2.odex文件...2 2.1.odex文件结构...2 2.2.odex文件结构分析...3 3.dex文件的验证与优化...3 3.1 dex文件加载流程... ...

最新文章

  1. 程序分析工具gprof介绍
  2. 清华大学:2021元宇宙研究报告!(附PPT下载)
  3. 现在写程序要像蚊子一样WZ132
  4. c#-SimHash匹配相似-算法
  5. VS CODE Python开发环境配置
  6. [linux 技巧] 使用 screen 管理你的远程会话(转载)
  7. [Flex] ButtonBar系列——labelFunction用户提供的函数,在每个项目上运行以确定其标签...
  8. python爬虫案例-爬取西刺免费代理服务器IP等信息
  9. 关于编译ns3的myfirst.cc问题
  10. 第十二课:树莓驱动SG90派舵机
  11. 《Objective-C 程序设计(第4版)》图书信息
  12. 如何进行远程协作办公?
  13. win10文件夹当作服务器,win10文件夹加密不了怎么办_网站服务器运行维护,win10
  14. java处理word文档 替换文本 水印 页眉
  15. 东华助手 v1.6.5
  16. thinkphp5oa管理系统
  17. 打开网上邻居,点击“查看工作组计算机”,出现:“Workgroup无法访问,您...
  18. windows11及以下系统怎么修改账户名
  19. 从Elance提现到国内银行的完美方法
  20. 【资料分享】Verilog编程艺术.pdf

热门文章

  1. MySQL性能优化之char、varchar、text的区别
  2. 程序员必备:提升开发效率神器,强烈推荐 !!!
  3. 介绍求解AX=b:可解性与解的结构
  4. python——函数 10、函数的嵌套
  5. bzoj1601: [Usaco2008 Oct]灌水
  6. (转)用来理解Java的8个图表
  7. ATL dll注册失败
  8. 一段旅程的结束和另一端旅程的开始
  9. 使用.net资源文件时候发生的问题
  10. django新建php文件,在Python的Django框架中创建语言文件