diff options
| author | Lioncash <mathew1800@gmail.com> | 2013-09-26 23:06:10 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2013-09-26 23:06:10 -0400 |
| commit | 8aba748735e83ed5865a2e78f6af9d966e0017b2 (patch) | |
| tree | d85775c7b549b5f70380b9970272a752f4813af7 /Source/Android/src | |
| parent | bea76ac129e6e918e98a0defdd1dda1d844c216c (diff) | |
[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.
Diffstat (limited to 'Source/Android/src')
| -rw-r--r-- | Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java index e28f30206d..e8a3fd9c94 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/folderbrowser/FolderBrowser.java @@ -48,39 +48,43 @@ public final class FolderBrowser extends ListFragment { m_activity.setTitle(getString(R.string.current_dir) + currDir.getName()); File[] dirs = currDir.listFiles(); - List<FolderBrowserItem>dir = new ArrayList<FolderBrowserItem>(); - List<FolderBrowserItem>fls = new ArrayList<FolderBrowserItem>(); + List<FolderBrowserItem> dir = new ArrayList<FolderBrowserItem>(); + List<FolderBrowserItem> fls = new ArrayList<FolderBrowserItem>(); // Supported extensions to filter by 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. - for(File entry : dirs) + // If dirs is null, then we don't have access permissions to the selected folder. + if (dirs != null) { - try + // Search for any directories or files within the current dir. + for(File entry : dirs) { - String entryName = entry.getName(); - boolean hasExtension = (entryName.lastIndexOf(".") != -1); - - // Skip hidden folders/files. - if (!entry.isHidden()) + try { - if(entry.isDirectory()) - { - dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath())); - } - else if (entry.isFile() && hasExtension) + String entryName = entry.getName(); + boolean hasExtension = (entryName.lastIndexOf(".") != -1); + + // Skip hidden folders/files. + if (!entry.isHidden()) { - if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.')))) + if(entry.isDirectory()) + { + dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath())); + } + else if (entry.isFile() && hasExtension) { - fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath())); + 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) - { - Log.e("FolderBrowser", ex.toString()); + catch (Exception ex) + { + Log.e("FolderBrowser", ex.toString()); + } } } |
