Hello, I hope you’re doing well.
I have manually checked my permissions via script and they all appear to be correct. I have also added them to the manifest. However, I am still receiving an UnauthorizedAccessException. Is it possible that the Magic Leap 2 system is somehow blocking access to all folders outside the application folder?
Unity Editor version: 2022.3.54.f1
ML2 OS version: 1.12.0
Unity SDK version : 2.6.0
Host OS: (Windows/MacOS) Windows 11
FOR ANDROID
System.Collections.IEnumerator RequestAndroidPermissions()
{
Debug.Log("--- Requesting Android Permissions ---");
// Check READ_EXTERNAL_STORAGE
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
{
Debug.Log("Requesting Android READ_EXTERNAL_STORAGE permission...");
Permission.RequestUserPermission(Permission.ExternalStorageRead);
// Wait for permission dialog
yield return new WaitForSeconds(1f);
// Check again
if (Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
{
Debug.Log("✅ Android READ_EXTERNAL_STORAGE granted");
}
else
{
Debug.LogWarning("⚠️ Android READ_EXTERNAL_STORAGE denied");
}
}
else
{
Debug.Log("✅ Android READ_EXTERNAL_STORAGE already granted");
}
// Check WRITE_EXTERNAL_STORAGE
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{
Debug.Log("Requesting Android WRITE_EXTERNAL_STORAGE permission...");
Permission.RequestUserPermission(Permission.ExternalStorageWrite);
// Wait for permission dialog
yield return new WaitForSeconds(1f);
if (Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{
Debug.Log("✅ Android WRITE_EXTERNAL_STORAGE granted");
}
else
{
Debug.LogWarning("⚠️ Android WRITE_EXTERNAL_STORAGE denied");
}
}
else
{
Debug.Log("✅ Android WRITE_EXTERNAL_STORAGE already granted");
}
androidPermissionsGranted = Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead) ||
Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite);
}
FOR MAGIC LEAP 2
System.Collections.IEnumerator RequestMLPermissions()
{
Debug.Log("--- Requesting Magic Leap Permissions ---");
MLResult resultRead = MLPermissions.CheckPermission(MLPermission.ReadExternalStorage);
if (resultRead != MLResult.Code.Ok)
{
Debug.Log("Requesting ML ReadExternalStorage permission...");
MLPermissions.RequestPermission(MLPermission.ReadExternalStorage, OnMLPermissionResult);
// Wait for permission result
float timeout = 10f;
while (!mlPermissionsGranted && timeout > 0)
{
timeout -= Time.deltaTime;
yield return null;
}
if (timeout <= 0)
{
Debug.LogWarning("ML permission request timed out");
}
}
else
{
Debug.Log("✅ ML ReadExternalStorage permission already granted");
mlPermissionsGranted = true;
}
MLResult resultWrite = MLPermissions.CheckPermission(MLPermission.WriteExternalStorage);
if (resultWrite != MLResult.Code.Ok)
{
Debug.Log("Requesting ML ReadExternalStorage permission...");
MLPermissions.RequestPermission(MLPermission.WriteExternalStorage, OnMLPermissionResult);
// Wait for permission result
float timeout = 10f;
while (!mlPermissionsGranted && timeout > 0)
{
timeout -= Time.deltaTime;
yield return null;
}
if (timeout <= 0)
{
Debug.LogWarning("ML permission request timed out");
}
}
else
{
Debug.Log("✅ ML WriteExternalStorage permission already granted");
mlPermissionsGranted = true;
}
}
I have also added these lines to both the AndroidManifest and ML2.AndroidManifest files.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.magicleap.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="com.magicleap.permission.WRITE_EXTERNAL_STORAGE" />
All of my permissions appear to be configured correctly. However, when I attempt to create a file outside the application folder, I receive this error: " Error Unity IOException: Permission denied UnauthorizedAccessException: Access to the path ‘/storage/emulated/0/Download/_cache’ is denied."
LOGS
2025/05/28 18:39:41.240 24400 24422 Info Unity === REQUESTING PERMISSIONS FOR MAGIC LEAP 2 ===
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.240 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.<Bootstrapper>d__26:MoveNext()
2025/05/28 18:39:41.240 24400 24422 Info Unity System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(TStateMachine&)
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Bootstrapper()
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Start()
2025/05/28 18:39:41.240 24400 24422 Info Unity
2025/05/28 18:39:41.240 24400 24422 Info Unity --- Requesting Magic Leap Permissions ---
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.<RequestMLPermissions>d__18:MoveNext()
2025/05/28 18:39:41.240 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.240 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.<Bootstrapper>d__26:MoveNext()
2025/05/28 18:39:41.240 24400 24422 Info Unity System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(TStateMachine&)
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Bootstrapper()
2025/05/28 18:39:41.240 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Start()
2025/05/28 18:39:41.240 24400 24422 Info Unity
2025/05/28 18:39:41.245 24400 24422 Info Unity ✅ ML ReadExternalStorage permission already granted
2025/05/28 18:39:41.245 24400 24422 Info Unity TEST.TEST_App.<RequestMLPermissions>d__18:MoveNext()
2025/05/28 18:39:41.245 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.245 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.245 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.245 24400 24422 Info Unity TEST.TEST_App.<Bootstrapper>d__26:MoveNext()
2025/05/28 18:39:41.245 24400 24422 Info Unity System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(TStateMachine&)
2025/05/28 18:39:41.245 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Bootstrapper()
2025/05/28 18:39:41.245 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Start()
2025/05/28 18:39:41.245 24400 24422 Info Unity
2025/05/28 18:39:41.246 24400 24422 Info Unity ✅ ML WriteExternalStorage permission already granted
2025/05/28 18:39:41.246 24400 24422 Info Unity TEST.TEST_App.<RequestMLPermissions>d__18:MoveNext()
2025/05/28 18:39:41.246 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.246 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.246 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.246 24400 24422 Info Unity TEST.TEST_App.<Bootstrapper>d__26:MoveNext()
2025/05/28 18:39:41.246 24400 24422 Info Unity System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(TStateMachine&)
2025/05/28 18:39:41.246 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Bootstrapper()
2025/05/28 18:39:41.246 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:Start()
2025/05/28 18:39:41.270 24400 24422 Warn Unity
2025/05/28 18:39:41.276 24400 24422 Info Unity --- Requesting Android Permissions ---
2025/05/28 18:39:41.276 24400 24422 Info Unity TEST.TEST_App.<RequestAndroidPermissions>d__25:MoveNext()
2025/05/28 18:39:41.276 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.276 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.276 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.276 24400 24422 Info Unity
2025/05/28 18:39:41.277 24400 24422 Info Unity ✅ Android READ_EXTERNAL_STORAGE already granted
2025/05/28 18:39:41.277 24400 24422 Info Unity TEST.TEST_App.<RequestAndroidPermissions>d__25:MoveNext()
2025/05/28 18:39:41.277 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.277 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.277 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.277 24400 24422 Info Unity
2025/05/28 18:39:41.278 24400 24422 Info Unity ✅ Android WRITE_EXTERNAL_STORAGE already granted
2025/05/28 18:39:41.278 24400 24422 Info Unity TEST.TEST_App.<RequestAndroidPermissions>d__25:MoveNext()
2025/05/28 18:39:41.278 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.278 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.278 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.292 24400 24422 Info Unity
2025/05/28 18:39:41.293 24400 24422 Info Unity === FINAL PERMISSION STATUS ===
2025/05/28 18:39:41.293 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:CheckPermissionStatus()
2025/05/28 18:39:41.293 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.293 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.293 24400 24422 Info Unity
2025/05/28 18:39:41.294 24400 24422 Info Unity ML Permissions: True
2025/05/28 18:39:41.294 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:CheckPermissionStatus()
2025/05/28 18:39:41.294 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.294 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.294 24400 24422 Info Unity
2025/05/28 18:39:41.294 24400 24422 Info Unity Android Permissions: True
2025/05/28 18:39:41.294 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:CheckPermissionStatus()
2025/05/28 18:39:41.294 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.294 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.294 24400 24422 Info Unity
2025/05/28 18:39:41.295 24400 24422 Info Unity Can Access Documents: True
2025/05/28 18:39:41.295 24400 24422 Info Unity TEST.TEST_App.BootstrapperV1:CheckPermissionStatus()
2025/05/28 18:39:41.295 24400 24422 Info Unity TEST.TEST_App.<RequestAllPermissions>d__17:MoveNext()
2025/05/28 18:39:41.295 24400 24422 Info Unity UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
2025/05/28 18:39:41.295 24400 24422 Info Unity
2025/05/28 18:39:41.763 24400 24422 Error Unity IOException: Permission denied
2025/05/28 18:39:41.763 24400 24422 Error Unity Rethrow as UnauthorizedAccessException: Access to the path '/storage/emulated/0/Download/_cache' is denied.
2025/05/28 18:39:41.763 24400 24422 Error Unity at System.IO.FileSystem.CreateDirectory (System.String fullPath) [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at System.IO.Directory.CreateDirectory (System.String path) [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at TEST.Core.Utils.FileSystem.AndroidFileSystemOps.CreateAndOpenSubfolderInCurrentFolderAsync (System.String subfolder) [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine] (TStateMachine& stateMachine) [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at TEST.Core.Utils.FileSystem.AndroidFileSystemOps.CreateAndOpenSubfolderInCurrentFolderAsync (System.String subfolder) [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at TEST.Platform.TestCache.TestCacheController.Init () [0x00000] in <00000000000000000000000000000000>:0
2025/05/28 18:39:41.763 24400 24422 Error Unity at System.Runtime.CompilerServ
Thank you for your time and assistance.