The Android externalStorageDirectory is currently set to a location outside of "scoped storage". As of Android 10, you cannot write to this location unless you set "AndroidManfiest.xml" <application/> attribute requestLegacyExternalStorage to true.
Use the folder location returned by the Java Context.getExternalFilesDir() method. This is a private sandboxed directory for the app that falls under scoped storage.
With this change, you do need the following permissions anymore.
With this change, you do need to use the following APIs anymore.
The new folder location supports automatic back-up by the Android OS. This means when you uninstall and re-install the app, the files you've written to external storage will be restored.
For apps built with Titanium 8.3.0 - 9.2x, you can read/write to externalStorageDirectory by doing the following in your "tiapp.xml" file.