Tanoda
CameraPermissionsController.cs
Go to the documentation of this file.
1using System;
2using UnityEngine;
3
4public class AndroidPermissionCallback : AndroidJavaProxy
5{
6 private event Action<string> OnPermissionGrantedAction;
7 private event Action<string> OnPermissionDeniedAction;
8 private event Action<string> OnPermissionDeniedAndDontAskAgainAction;
9
10 public AndroidPermissionCallback(Action<string> onGrantedCallback, Action<string> onDeniedCallback,
11 Action<string> onDeniedAndDontAskAgainCallback)
12 : base("com.ToolBar.EasyWebCam.UnityAndroidPermissions$IPermissionRequestResult2")
13 {
14 if (onGrantedCallback != null) OnPermissionGrantedAction += onGrantedCallback;
15 if (onDeniedCallback != null) OnPermissionDeniedAction += onDeniedCallback;
16 if (onDeniedAndDontAskAgainCallback != null)
17 OnPermissionDeniedAndDontAskAgainAction += onDeniedAndDontAskAgainCallback;
18 }
19
20 // Handle permission granted
21 public virtual void OnPermissionGranted(string permissionName)
22 {
23 //Debug.Log("Permission " + permissionName + " GRANTED");
24 if (OnPermissionGrantedAction != null) OnPermissionGrantedAction(permissionName);
25 }
26
27 // Handle permission denied
28 public virtual void OnPermissionDenied(string permissionName)
29 {
30 //Debug.Log("Permission " + permissionName + " DENIED!");
31 if (OnPermissionDeniedAction != null) OnPermissionDeniedAction(permissionName);
32 }
33
34 // Handle permission denied and 'Dont ask again' selected
35 // Note: falls back to OnPermissionDenied() if action not registered
36 public virtual void OnPermissionDeniedAndDontAskAgain(string permissionName)
37 {
38 //Debug.Log("Permission " + permissionName + " DENIED and 'Dont ask again' was selected!");
39 if (OnPermissionDeniedAndDontAskAgainAction != null)
40 OnPermissionDeniedAndDontAskAgainAction(permissionName);
41 else if (OnPermissionDeniedAction != null) OnPermissionDeniedAction(permissionName);
42 }
43}
44
46{
47 private static AndroidJavaObject m_Activity;
48 private static AndroidJavaObject m_PermissionService;
49
50 private static AndroidJavaObject GetActivity()
51 {
52 if (m_Activity == null)
53 {
54 var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
55 m_Activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
56 }
57
58 return m_Activity;
59 }
60
61 private static AndroidJavaObject GetPermissionsService()
62 {
63 return m_PermissionService ??
64 (m_PermissionService = new AndroidJavaObject("com.ToolBar.EasyWebCam.UnityAndroidPermissions"));
65 }
66
67 public static bool IsPermissionGranted(string permissionName)
68 {
69 return GetPermissionsService().Call<bool>("IsPermissionGranted", GetActivity(), permissionName);
70 }
71
72 public static void RequestPermission(string permissionName, AndroidPermissionCallback callback)
73 {
74 RequestPermission(new[] {permissionName}, callback);
75 }
76
77 public static void RequestPermission(string[] permissionNames, AndroidPermissionCallback callback)
78 {
79 GetPermissionsService().Call("RequestPermissionAsync", GetActivity(), permissionNames, callback);
80 }
81}
virtual void OnPermissionDeniedAndDontAskAgain(string permissionName)
virtual void OnPermissionDenied(string permissionName)
virtual void OnPermissionGranted(string permissionName)
AndroidPermissionCallback(Action< string > onGrantedCallback, Action< string > onDeniedCallback, Action< string > onDeniedAndDontAskAgainCallback)
static bool IsPermissionGranted(string permissionName)
static void RequestPermission(string permissionName, AndroidPermissionCallback callback)
static void RequestPermission(string[] permissionNames, AndroidPermissionCallback callback)