using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
namespace MagicLeap.Android
{
public static class Permissions
{
public const string EyeTracking = "com.magicleap.permission.EYE_TRACKING";
public const string PupilSize = "com.magicleap.permission.PUPIL_SIZE";
public const string SpatialAnchors = "com.magicleap.permission.SPATIAL_ANCHOR";
public const string HandTracking = "com.magicleap.permission.HAND_TRACKING";
public const string WebView = "com.magicleap.permission.WEBVIEW";
public const string MarkerTracking = "com.magicleap.permission.MARKER_TRACKING";
public const string VoiceInput = "com.magicleap.permission.VOICE_INPUT";
public const string SpatialMapping = "com.magicleap.permission.SPATIAL_MAPPING";
public const string DepthCamera = "com.magicleap.permission.DEPTH_CAMERA";
public const string SystemNotification = "com.magicleap.permission.SYSTEM_NOTIFICATION";
public const string SpaceManager = "com.magicleap.permission.SPACE_MANAGER";
public const string SpaceImportExport = "com.magicleap.permission.SPACE_IMPORT_EXPORT";
public const string EyeCamera = "com.magicleap.permission.EYE_CAMERA";
public const string FacialExpression = "com.magicleap.permission.FACIAL_EXPRESSION";
public static void RequestPermission(string permission,
Action<string> onPermissionGranted = null,
Action<string> onPermissionDenied = null,
Action<string> onPermissionDeniedDontAskAgain = null)
{
if (Application.isEditor)
{
onPermissionGranted?.Invoke(permission);
}
else
{
RequestPermissions(new string[] { permission }, onPermissionGranted, onPermissionDenied, onPermissionDeniedDontAskAgain);
}
}
public static void RequestPermissions(string[] permissions,
Action<string> onPermissionGranted = null,
Action<string> onPermissionDenied = null,
Action<string> onPermissionDeniedDontAskAgain = null)
{
var permissionsToCheck = new List<string>();
foreach (string permission in permissions)
{
if (CheckPermission(permission))
{
onPermissionGranted?.Invoke(permission);
}
else
{
permissionsToCheck.Add(permission);
}
}
if (Application.isEditor || permissionsToCheck.Count == 0)
{
return;
}
var callbacks = new PermissionCallbacks();
callbacks.PermissionGranted += onPermissionGranted;
callbacks.PermissionDenied += onPermissionDenied;
callbacks.PermissionDeniedAndDontAskAgain += onPermissionDeniedDontAskAgain;
Permission.RequestUserPermissions(permissionsToCheck.ToArray(), callbacks);
}
public static bool CheckPermission(string permission) => Application.isEditor || Permission.HasUserAuthorizedPermission(permission);
}
}