Unity Android External Storage Path Resolution
string FilePos = Application.persistentDataPath + "/SaveFolder";
The traditional approach of setting the path like this used to work fine.
However, it recently stopped working.
var jc = new AndroidJavaClass("android.os.Environment");
var path = jc.CallStatic("getExternalStoragePublicDirectory",
jc.GetStatic("DIRECTORY_DCIM"))
.Call("getAbsolutePath");
string FilePos = path + "/SaveFolder";
So the fix is to resolve the path through AndroidJavaClass as shown above.
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{
// Request storage write permission
Permission.RequestUserPermission(Permission.ExternalStorageWrite);
}
And of course, you need to check and request the appropriate permissions.
 in Player Settings, and you're good to go.