[Scummvm-git-logs] scummvm branch-2-7 -> 4a35d9019165ef4c695125abb15870a92307930f
antoniou79
noreply at scummvm.org
Sun Apr 23 10:40:04 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4a35d90191 ANDROID: Prevent getPath() when getExternalFilesDir(null) returns null
Commit: 4a35d9019165ef4c695125abb15870a92307930f
https://github.com/scummvm/scummvm/commit/4a35d9019165ef4c695125abb15870a92307930f
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2023-04-23T13:39:55+03:00
Commit Message:
ANDROID: Prevent getPath() when getExternalFilesDir(null) returns null
According to documentation getExternalFilesDir returns the absolute path to application-specific directory
May return null if shared storage is not currently available.
This will not happen for getFilesDir() which returns the internal app path (always guaranteed to be available)
Changed paths:
backends/platform/android/org/scummvm/scummvm/ScummVMActivity.java
diff --git a/backends/platform/android/org/scummvm/scummvm/ScummVMActivity.java b/backends/platform/android/org/scummvm/scummvm/ScummVMActivity.java
index f3c9e5c84ac..199075ab7fc 100644
--- a/backends/platform/android/org/scummvm/scummvm/ScummVMActivity.java
+++ b/backends/platform/android/org/scummvm/scummvm/ScummVMActivity.java
@@ -804,7 +804,7 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
@Override
protected String[] getSysArchives() {
Log.d(ScummVM.LOG_TAG, "Adding to Search Archive: " + _actualScummVMDataDir.getPath());
- if (_externalPathAvailableForReadAccess) {
+ if (_externalPathAvailableForReadAccess && _possibleExternalScummVMDir != null) {
Log.d(ScummVM.LOG_TAG, "Adding to Search Archive: " + _possibleExternalScummVMDir.getPath());
return new String[]{_actualScummVMDataDir.getPath(), _possibleExternalScummVMDir.getPath()};
} else return new String[]{_actualScummVMDataDir.getPath()};
@@ -1429,10 +1429,14 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
_possibleExternalScummVMDir = getExternalFilesDir(null);
_externalPathAvailableForReadAccess = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))
- || Environment.MEDIA_UNKNOWN.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))
- || Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))
- ) {
+ if ( (_possibleExternalScummVMDir != null
+ && (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))
+ || Environment.MEDIA_UNKNOWN.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))
+ || Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment.getExternalStorageState(_possibleExternalScummVMDir))))
+ || (_possibleExternalScummVMDir == null
+ && (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
+ || Environment.MEDIA_UNKNOWN.equals(Environment.getExternalStorageState())
+ || Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment.getExternalStorageState())))) {
_externalPathAvailableForReadAccess = true;
}
} else {
@@ -1471,18 +1475,18 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
// We want to re-use the more recent ScummVM old version too
// TODO try getDir too without a path? just "." ??
candidateOldLocationsOfScummVMConfigMap.put("(scummvm.ini) (SDL port - B)", new File(_actualScummVMDataDir, "../.config/scummvm/scummvm.ini"));
- if (_externalPathAvailableForReadAccess) {
+ if (_externalPathAvailableForReadAccess && _possibleExternalScummVMDir != null) {
candidateOldLocationsOfScummVMConfigMap.put("(scummvm.ini) (SDL port - C)", new File(_possibleExternalScummVMDir, ".config/scummvm/scummvm.ini"));
candidateOldLocationsOfScummVMConfigMap.put("(scummvm.ini) (SDL port - D)", new File(_possibleExternalScummVMDir, "../.config/scummvm/scummvm.ini"));
}
candidateOldLocationsOfScummVMConfigMap.put("(scummvm.ini) (SDL port - E)", new File(Environment.getExternalStorageDirectory(), ".config/scummvm/scummvm.ini"));
candidateOldLocationsOfScummVMConfigMap.put("(scummvmrc) (version 1.8.1- or PlayStore 2.1.0) - Internal", new File(_actualScummVMDataDir, "scummvmrc"));
- if (_externalPathAvailableForReadAccess) {
+ if (_externalPathAvailableForReadAccess && _possibleExternalScummVMDir != null) {
candidateOldLocationsOfScummVMConfigMap.put("(scummvmrc) (version 1.8.1- or PlayStore 2.1.0) - Ext Emu", new File(_possibleExternalScummVMDir, "scummvmrc"));
}
candidateOldLocationsOfScummVMConfigMap.put("(scummvmrc) (version 1.8.1- or PlayStore 2.1.0) - Ext SD", new File(Environment.getExternalStorageDirectory(), "scummvmrc"));
candidateOldLocationsOfScummVMConfigMap.put("(.scummvmrc) (POSIX conformance) - Internal", new File(_actualScummVMDataDir, ".scummvmrc"));
- if (_externalPathAvailableForReadAccess) {
+ if (_externalPathAvailableForReadAccess && _possibleExternalScummVMDir != null) {
candidateOldLocationsOfScummVMConfigMap.put("(.scummvmrc) (POSIX conformance) - Ext Emu", new File(_possibleExternalScummVMDir, ".scummvmrc"));
}
candidateOldLocationsOfScummVMConfigMap.put("(.scummvmrc) (POSIX conformance) - Ext SD)", new File(Environment.getExternalStorageDirectory(), ".scummvmrc"));
@@ -1493,8 +1497,8 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
for (int incIndx = 0; incIndx + 1 < listOfAuxExtStoragePaths.length; incIndx += 2) {
// exclude identical matches for internal and emulated external app dir, since we take them into account below explicitly
if (listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_actualScummVMDataDir.getPath()) != 0
- && listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_possibleExternalScummVMDir.getPath()) != 0
- ) {
+ && (_possibleExternalScummVMDir == null
+ || listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_possibleExternalScummVMDir.getPath()) != 0)) {
//
// Possible for Config file locations on top of paths returned by getAllStorageLocationsNoPermissionRequest
//
@@ -1769,7 +1773,7 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
candidateOldLocationsOfScummVMSavesMap.put("A06", new File(_actualScummVMDataDir, "../.local/scummvm/saves"));
candidateOldLocationsOfScummVMSavesMap.put("A07", new File(_actualScummVMDataDir, "../saves"));
candidateOldLocationsOfScummVMSavesMap.put("A08", new File(_actualScummVMDataDir, "../scummvm/saves"));
- if (_externalPathAvailableForReadAccess) {
+ if (_externalPathAvailableForReadAccess && _possibleExternalScummVMDir != null) {
// this is a popular one
candidateOldLocationsOfScummVMSavesMap.put("A09", new File(_possibleExternalScummVMDir, ".local/share/scummvm/saves"));
candidateOldLocationsOfScummVMSavesMap.put("A10", new File(_possibleExternalScummVMDir, ".local/scummvm/saves"));
@@ -1789,8 +1793,8 @@ public class ScummVMActivity extends Activity implements OnKeyboardVisibilityLis
for (int incIndx = 0; incIndx + 1 < listOfAuxExtStoragePaths.length; incIndx += 2) {
// exclude identical matches for internal and emulated external app dir, since we take them into account below explicitly
if (listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_actualScummVMDataDir.getPath()) != 0
- && listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_possibleExternalScummVMDir.getPath()) != 0
- ) {
+ && (_possibleExternalScummVMDir == null
+ || listOfAuxExtStoragePaths[incIndx + 1].compareToIgnoreCase(_possibleExternalScummVMDir.getPath()) != 0)) {
//
// Possible for Saves dirs locations on top of paths returned by getAllStorageLocationsNoPermissionRequest
//
More information about the Scummvm-git-logs
mailing list