android新手,最近在学习 搜索sd卡上的所有txt文件并将其放入listview中显示,加载的过程中界面上会显示一个progress dialog。在之前的手机(Android5.0 android4.4)上都能正常的搜索到,但最近新换了一个手机(6.0) 发现logcat能够正常打印出路径 handle也能接收到搜索完成返回的message,但是没有扫描并放入listview 也没有显示progressdialog。求助

代码如下

package com.ldgforever.jianreader;

import java.io.File;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.ldgforever.savedata.savedataListMap;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.ActionMode;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AbsListView.MultiChoiceModeListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.Toast;

public class BookListActivity extends Activity {

private static List file_name;

private static List file_txt_path;

private MyBookAdapter adapter;

private File file;

private List> listItems;

private MultiModeCallback mCallback;

private String mExternalStoragePath;

private Handler mHandler;

private ListView mListView;

private ProgressDialog mProgressDialog;

/**

* 接收返回的路径

*/

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Log.d("com.ldgforever.jianreader", "receivingPath");

if (data != null) {

Log.d("com.ldgforever.jianreader", "onActivityResult");

ArrayList mPath = data.getStringArrayListExtra("file");

for (int i = 0; i < mPath.size(); i++) {

File pathFile = new File(mPath.get(i));

Map pathMap = new HashMap();

if (pathFile.exists()) {

if (pathFile.getName().endsWith(".txt")) {

pathMap.put("Name", pathFile.getName());

pathMap.put("Path", pathFile.getPath());

listItems.add(pathMap);

savedataListMap.saveInfo(BookListActivity.this, "ListMap", listItems);

ShowTxtFilesInList(listItems);

} else {

Toast.makeText(BookListActivity.this, "请选择一个txt文件!", 0).show();

;

}

}

}

}

}

@Override

protected void onCreate(Bundle bundle) {

super.onCreate(bundle);

setContentView(R.layout.activity_book_list);

mProgressDialog = new ProgressDialog(this);

mProgressDialog.setCancelable(false);

mProgressDialog.setMessage("正在搜索书籍,请稍候 ……");

mExternalStoragePath = Environment.getExternalStorageDirectory().toString();

Log.i("JianReader", mExternalStoragePath);

file = new File(mExternalStoragePath);

file_name = new ArrayList();

file_txt_path = new ArrayList();

listItems = new ArrayList>();

listItems = savedataListMap.getInfo(BookListActivity.this, "ListMap");

if (listItems.isEmpty()) {

listItems = new ArrayList>();

mProgressDialog.show();

new Thread() {

public void run() {

Log.i("JianReader", "listItem is Empty");

listFileTxt(file);

mHandler.sendEmptyMessage(11);

}

}.start();

} else {

ShowTxtFilesInList(listItems);

}

mHandler = new Handler() {

public void handleMessage(Message message) {

switch (message.what) {

case 11:

Log.i("JianReader", message.what + "");

ShowTxtFilesInList(listItems);

savedataListMap.saveInfo(BookListActivity.this, "ListMap", listItems);

if (mProgressDialog.isShowing()) {

mProgressDialog.dismiss();

return;

}

break;

case 12:

Log.i("JianReader", message.what + "");

ShowTxtFilesInList(listItems);

savedataListMap.saveInfo(BookListActivity.this, "ListMap", listItems);

if (mProgressDialog.isShowing()) {

mProgressDialog.dismiss();

return;

}

break;

default:

break;

}

return;

}

};

}

/**

* 书籍添加对话框

*/

private void BookAddingDialog() {

android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);

builder.setTitle("请选择添加书籍的方式");

builder.setPositiveButton("扫描SDCard添加", new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialoginterface, int i) {

listItems = new ArrayList>();

mProgressDialog.show();

new Thread() {

public void run() {

listFileTxt(file);

mHandler.sendEmptyMessage(12);

}

}.start();

}

});

builder.setNegativeButton("选择路径添加", new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialoginterface, int i) {

Intent intent = new Intent(BookListActivity.this, MyFileManager.class);

startActivityForResult(intent, 2);

}

});

builder.setNeutralButton("稍后手动添加", new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialoginterface, int i) {

dialoginterface.dismiss();

}

});

builder.create().show();

}

/**

* 将保存在List>中的书籍信息显示到ListView中

*

* @param listItems

*/

private void ShowTxtFilesInList(final List> listItems) {

if (file_name != null) {

for (int i = 0; i < file_name.size(); i++) {

HashMap hashmap = new HashMap();

hashmap.put("Name", (String) file_name.get(i));

hashmap.put("Path", (String) file_txt_path.get(i));

listItems.add(hashmap);

}

adapter = new MyBookAdapter(this, listItems);

mCallback = new MultiModeCallback();

mListView = (ListView) findViewById(R.id.booklist);

mListView.setChoiceMode(3); // Multi

mListView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

Intent ii = new Intent(BookListActivity.this, ReadingActivity.class);

String itemPath = listItems.get(position).get("Path");

ii.putExtra("mItemPath", itemPath);

startActivity(ii);

}

});

mListView.setMultiChoiceModeListener(mCallback);

mListView.setAdapter(adapter);

} else {

failAddingDialog();

return;

}

}

/**

* 添加书籍失败对话框

*/

private void failAddingDialog() {

android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);

builder.setTitle("添加书籍失败");

builder.setPositiveButton("确定", new android.content.DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialoginterface, int i) {

dialoginterface.dismiss();

}

});

}

/**

* 递归查找SD卡上所有书籍

*

* @param file

*/

public static void listFileTxt(File file) {

File[] files = file.listFiles();

try {

for (File f : files) {

if (!f.isDirectory()) {

if (f.getName().endsWith(".txt")) {

long size = f.length();

if (size > 50 * 1024) {

file_name.add(f.getName());

file_txt_path.add(f.getAbsolutePath());

}

}

} else if (f.isDirectory()) {

listFileTxt(f);

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

logcat无报错

我试了默认存储位置为机身和SD卡,均不能加载

android 获取sd卡目录失败_获取sd卡存储路径失败相关推荐

  1. kepserver在设备上添加项目失败_隔空投送存储项目失败怎么办

    iphone隔空投送失败是什么原因? IOS系统下有两个并列又超级强大的功能就是Airplay屏幕镜像与AirDrop隔空投送,Airplay屏幕镜像,其实经常玩手机投屏的水果粉应该都知道,Airpl ...

  2. termux获取sd卡读写权限_重回SD市场 三星128GB/256GB PRO Plus存储卡评测

    当前数码相机的性能越来越强,视频/照片双修的拍摄能力也逐步得到提高,对于大多数人来说,大容量的存储卡需求也在逐渐增大,一款好的SD卡不但能够进行快速的视频.照片捕捉,而且在抗磁.耐高温等一些特定环境的 ...

  3. 咪咕盒子链接服务器失败_咪咕打卡正式开启,你的疑问都可以在这里找答案!...

    7.1凌晨,咪咕准时开启打卡,在咪咕阅读APP正式上线了打卡活动页面,相信很多小伙伴都已经开始了100天漫漫打卡路. 不过也有部分小伙伴反应, 有进入活动页面没有找到打卡.明明阅读了15分钟却显示时长 ...

  4. java获取radio选中的值_获取radio值

    使用jquery获取radio的值  使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来 ...

  5. 单反相机tf卡用sd卡套稳定吗_单反相机tf卡用sd卡套稳定吗

    单反相机是直接买SD卡还是TF+SD卡套 1.单反相机如果是使用SD卡的,务必要购买SD卡 2.不要因为价格便宜而购买TF卡+卡套,TF卡的读写速度要低于SD卡,最关键的是TF卡再经卡套转接,多了一个 ...

  6. 小米门卡协议加载失败_小米门卡模拟功能怎么开通 小米门卡模拟常见问题汇总解答 (全文)...

    此前小米在MIUI开发版上线支持了门卡模拟功能,今天小米MIX 2S发布会宣布,小米门卡模拟正式上线MIUI 9稳定版,稳定版用户只需将系统升级至最新版本(MIUI9.5)即可开通体验,开通门卡模拟让 ...

  7. 小米手机第三方卡刷软件_小米Max卡刷教程_小米Max用recovery刷第三方系统包

    来说一下有关小米Max手机的卡刷教程了,也就是用第三方recovery进行刷机的教程了,关于这个手机的第三方recovery之前已经给大家说过了,今天主要是说说如何利用recovery进行卡刷的操作, ...

  8. python 拷贝文件创建目录失败_解决python os.mkdir创建目录失败的问题

    起因 今天使用 python os.mkdir创建目录时遇到的一个小问题: feature_dir = os.path.join(os.getcwd(), 'system', 'feature') i ...

  9. 新酷卡 mysql接口_新酷卡M池二次开发模块数据库操作版

    有大神发了一个soket方式的,尝试继承到模块后发现soket不太适合放到易模块类内, 客户组件不支持放在类内,必须放在界面上,传入赋值类内客户变量,收到数据事件也没办法放在类内,放弃 远程服务支持库 ...

  10. 仓库货位卡标识牌_仓库货位卡怎么使用?摆放、保存、使用原则都在这儿!

    仓库货位卡主要起标识作用,现场物料一目了然,对于仓库新人及参观者有帮助,同时,在仓库现场可以清楚查到物料数量,便于及时发现差异,也便于检查监督工作和开展盘点工作.那么,仓库货位卡怎么使用呢?这里小编为 ...

最新文章

  1. volley框架下发送和读取cookie
  2. Windows 使用小技巧
  3. c# 可变二维数组_C#| 具有固定行大小和可变列大小的二维数组
  4. 解决ios上微信无法捕获返回键按钮事件的问题
  5. 勒索病毒恐难暴力破解 国内比特币平台尚买币潮
  6. MSSQL差异备份拿shell(转)
  7. “朝阳群众”APP上线!解读怎么做一款深入群众的应用
  8. win7虚拟机_VMware8虚拟机安装教程
  9. 三维建模技术是如何发展的
  10. python print()什么意思_python print用法是什么
  11. 凯盛融英在港招股书“失效”:遭证监会严格发问,需补充披露
  12. Microchip最新推出的ATMEGA4809-XPRO开发板简介
  13. 2022年度变更调查数据处理工具箱
  14. 三体视讯获得数千万元天使轮融资,打造新营销渠道“新媒超信”
  15. element-ui实现表格分页和搜索功能
  16. Tensroflow 手动编译TFLite
  17. 街篮服务器维护比赛没打完,一球成名!热血街篮追梦杯圆满落幕,WaRn丶警告战队一穿五夺冠...
  18. 强连接运营社张强:三分钟学会社群运营,从这三个方面、六个引流涨粉技巧出发
  19. 折腾日记:树莓派如何硬盘、u盘启动 (usb boot)
  20. php 统计磁盘大小,PHP_PHP统计目录大小的自定义函数分享,计算文件、磁盘分区和目录的 - phpStudy...

热门文章

  1. linux ls mv,04_Linux目录文件操作命令1(mv ls cd...)_我的Linux之路
  2. java解析xml 字符串_Java解析XML字符串
  3. android 获取4g信号_5G与1G、2G、3G、4G有何不同
  4. oracle+get+json,jQuery+ajax中getJSON() 用法实例
  5. Mysql -uroot -p 登陆不上_mysql服务启动却连接不上的解决方法
  6. vue 生产环境 background 背景图不显示原因
  7. macaca使用中问题解决方法整理
  8. Linux下改动Oracle数据库字符集命令
  9. codevs 3287 货车运输 NOIP2013提高组
  10. Linux系统的各种安装方法与修复技巧