无法从我的android应用程序(android Studio)访问可移动SD卡



我正在开发一个应用程序,我必须在内部存储和可移动SD卡中搜索PDF文件。这是我正在使用的代码:

private void Search_Dir(File dir) {
try {
String pdfPattern = displayName;  //(displayName = pdf_name.pdf)
File FileList[] = dir.listFiles();
if(FileList != null)
{
for(int i = 0 ; i < FileList.length ; i++)
{
if(FileList[i].isDirectory())
{
Search_Dir(FileList[i]);
}
else
{
if(FileList[i].getName().endsWith(pdfPattern))
{
path = FileList[i].toString();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

这里路径是一个字符串,它将包含我要搜索的PDF的路径。我正在搜索的PDF的名称是displayName

我这样称呼这种方法:

Search_Dir(Environment.getExternalStorageDirectory());

但不幸的是,这种方法只在我的内部存储中搜索PDF。我已经定义了READ_EXTERNAL_STORAGEWRITE_EEXTERNAL_TORAGE,并且我还在运行时请求这些权限。

我不知道这是否重要,但它以前运行得很好。我得到了PDF文件的路径也位于SD卡。但我在手机上重置了出厂数据,然后再次安装了我的应用程序。从那时起,它就不起作用了。

它正在处理位于我的内部存储中的文件,如/storage/emulated/0/。。。。。但不在可移动SD卡上。

我的问题:我做错了什么。或者我应该使用任何其他方法来搜索在内部存储和可移动SD卡上都能工作的文件。

谢谢。

Environment.getExternalStorageDirectory((为您提供设备主存储的路径,您也可以将其称为内部存储。

您必须获得可移动存储的根路径(如果可用(才能在那里搜索文件。如果你不想太头疼,那么你可以简单地制作一个存储选择器,或者从一堆已经可用和测试过的存储器中实现任何一个。

最新更新