android 获取sd卡目录失败_获取sd卡存储路径失败
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卡存储路径失败相关推荐
- kepserver在设备上添加项目失败_隔空投送存储项目失败怎么办
iphone隔空投送失败是什么原因? IOS系统下有两个并列又超级强大的功能就是Airplay屏幕镜像与AirDrop隔空投送,Airplay屏幕镜像,其实经常玩手机投屏的水果粉应该都知道,Airpl ...
- termux获取sd卡读写权限_重回SD市场 三星128GB/256GB PRO Plus存储卡评测
当前数码相机的性能越来越强,视频/照片双修的拍摄能力也逐步得到提高,对于大多数人来说,大容量的存储卡需求也在逐渐增大,一款好的SD卡不但能够进行快速的视频.照片捕捉,而且在抗磁.耐高温等一些特定环境的 ...
- 咪咕盒子链接服务器失败_咪咕打卡正式开启,你的疑问都可以在这里找答案!...
7.1凌晨,咪咕准时开启打卡,在咪咕阅读APP正式上线了打卡活动页面,相信很多小伙伴都已经开始了100天漫漫打卡路. 不过也有部分小伙伴反应, 有进入活动页面没有找到打卡.明明阅读了15分钟却显示时长 ...
- java获取radio选中的值_获取radio值
使用jquery获取radio的值 使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来 ...
- 单反相机tf卡用sd卡套稳定吗_单反相机tf卡用sd卡套稳定吗
单反相机是直接买SD卡还是TF+SD卡套 1.单反相机如果是使用SD卡的,务必要购买SD卡 2.不要因为价格便宜而购买TF卡+卡套,TF卡的读写速度要低于SD卡,最关键的是TF卡再经卡套转接,多了一个 ...
- 小米门卡协议加载失败_小米门卡模拟功能怎么开通 小米门卡模拟常见问题汇总解答 (全文)...
此前小米在MIUI开发版上线支持了门卡模拟功能,今天小米MIX 2S发布会宣布,小米门卡模拟正式上线MIUI 9稳定版,稳定版用户只需将系统升级至最新版本(MIUI9.5)即可开通体验,开通门卡模拟让 ...
- 小米手机第三方卡刷软件_小米Max卡刷教程_小米Max用recovery刷第三方系统包
来说一下有关小米Max手机的卡刷教程了,也就是用第三方recovery进行刷机的教程了,关于这个手机的第三方recovery之前已经给大家说过了,今天主要是说说如何利用recovery进行卡刷的操作, ...
- python 拷贝文件创建目录失败_解决python os.mkdir创建目录失败的问题
起因 今天使用 python os.mkdir创建目录时遇到的一个小问题: feature_dir = os.path.join(os.getcwd(), 'system', 'feature') i ...
- 新酷卡 mysql接口_新酷卡M池二次开发模块数据库操作版
有大神发了一个soket方式的,尝试继承到模块后发现soket不太适合放到易模块类内, 客户组件不支持放在类内,必须放在界面上,传入赋值类内客户变量,收到数据事件也没办法放在类内,放弃 远程服务支持库 ...
- 仓库货位卡标识牌_仓库货位卡怎么使用?摆放、保存、使用原则都在这儿!
仓库货位卡主要起标识作用,现场物料一目了然,对于仓库新人及参观者有帮助,同时,在仓库现场可以清楚查到物料数量,便于及时发现差异,也便于检查监督工作和开展盘点工作.那么,仓库货位卡怎么使用呢?这里小编为 ...
最新文章
- volley框架下发送和读取cookie
- Windows 使用小技巧
- c# 可变二维数组_C#| 具有固定行大小和可变列大小的二维数组
- 解决ios上微信无法捕获返回键按钮事件的问题
- 勒索病毒恐难暴力破解 国内比特币平台尚买币潮
- MSSQL差异备份拿shell(转)
- “朝阳群众”APP上线!解读怎么做一款深入群众的应用
- win7虚拟机_VMware8虚拟机安装教程
- 三维建模技术是如何发展的
- python print()什么意思_python print用法是什么
- 凯盛融英在港招股书“失效”:遭证监会严格发问,需补充披露
- Microchip最新推出的ATMEGA4809-XPRO开发板简介
- 2022年度变更调查数据处理工具箱
- 三体视讯获得数千万元天使轮融资,打造新营销渠道“新媒超信”
- element-ui实现表格分页和搜索功能
- Tensroflow 手动编译TFLite
- 街篮服务器维护比赛没打完,一球成名!热血街篮追梦杯圆满落幕,WaRn丶警告战队一穿五夺冠...
- 强连接运营社张强:三分钟学会社群运营,从这三个方面、六个引流涨粉技巧出发
- 折腾日记:树莓派如何硬盘、u盘启动 (usb boot)
- php 统计磁盘大小,PHP_PHP统计目录大小的自定义函数分享,计算文件、磁盘分区和目录的 - phpStudy...
热门文章
- linux ls mv,04_Linux目录文件操作命令1(mv ls cd...)_我的Linux之路
- java解析xml 字符串_Java解析XML字符串
- android 获取4g信号_5G与1G、2G、3G、4G有何不同
- oracle+get+json,jQuery+ajax中getJSON() 用法实例
- Mysql -uroot -p 登陆不上_mysql服务启动却连接不上的解决方法
- vue 生产环境 background 背景图不显示原因
- macaca使用中问题解决方法整理
- Linux下改动Oracle数据库字符集命令
- codevs 3287 货车运输 NOIP2013提高组
- Linux系统的各种安装方法与修复技巧