mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
[Android] Fix a situation within the FolderBrowser where the application would crash. listFiles() returns null when either the File object it's called on isn't a directory or if an I/O error happens (in their infinite wisdom, they actually thought NOT throwing an exception was a cool way to handle this. How about that?). In the case of trying to access system directories as a normal user, an I/O error will occur due to permission access rights. This fixes that.
This commit is contained in:
@ -48,39 +48,43 @@ public final class FolderBrowser extends ListFragment
|
|||||||
{
|
{
|
||||||
m_activity.setTitle(getString(R.string.current_dir) + currDir.getName());
|
m_activity.setTitle(getString(R.string.current_dir) + currDir.getName());
|
||||||
File[] dirs = currDir.listFiles();
|
File[] dirs = currDir.listFiles();
|
||||||
List<FolderBrowserItem>dir = new ArrayList<FolderBrowserItem>();
|
List<FolderBrowserItem> dir = new ArrayList<FolderBrowserItem>();
|
||||||
List<FolderBrowserItem>fls = new ArrayList<FolderBrowserItem>();
|
List<FolderBrowserItem> fls = new ArrayList<FolderBrowserItem>();
|
||||||
|
|
||||||
// Supported extensions to filter by
|
// Supported extensions to filter by
|
||||||
Set<String> validExts = new HashSet<String>(Arrays.asList(".dff", ".dol", ".elf", ".gcm", ".gcz", ".iso", ".wad", ".wbfs"));
|
Set<String> validExts = new HashSet<String>(Arrays.asList(".dff", ".dol", ".elf", ".gcm", ".gcz", ".iso", ".wad", ".wbfs"));
|
||||||
|
|
||||||
// Search for any directories or files within the current dir.
|
// If dirs is null, then we don't have access permissions to the selected folder.
|
||||||
for(File entry : dirs)
|
if (dirs != null)
|
||||||
{
|
{
|
||||||
try
|
// Search for any directories or files within the current dir.
|
||||||
|
for(File entry : dirs)
|
||||||
{
|
{
|
||||||
String entryName = entry.getName();
|
try
|
||||||
boolean hasExtension = (entryName.lastIndexOf(".") != -1);
|
|
||||||
|
|
||||||
// Skip hidden folders/files.
|
|
||||||
if (!entry.isHidden())
|
|
||||||
{
|
{
|
||||||
if(entry.isDirectory())
|
String entryName = entry.getName();
|
||||||
|
boolean hasExtension = (entryName.lastIndexOf(".") != -1);
|
||||||
|
|
||||||
|
// Skip hidden folders/files.
|
||||||
|
if (!entry.isHidden())
|
||||||
{
|
{
|
||||||
dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath()));
|
if(entry.isDirectory())
|
||||||
}
|
|
||||||
else if (entry.isFile() && hasExtension)
|
|
||||||
{
|
|
||||||
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
|
||||||
{
|
{
|
||||||
fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath()));
|
dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath()));
|
||||||
|
}
|
||||||
|
else if (entry.isFile() && hasExtension)
|
||||||
|
{
|
||||||
|
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||||
|
{
|
||||||
|
fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
catch (Exception ex)
|
{
|
||||||
{
|
Log.e("FolderBrowser", ex.toString());
|
||||||
Log.e("FolderBrowser", ex.toString());
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user