20240422
This commit is contained in:
commit
e0afef912e
1285 files changed
+83219
No files matched your search
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public class UniAndroidPermission : MonoBehaviour
|
||||
{
|
||||
const string PackageName = "net.sanukin.PermissionManager";
|
||||
|
||||
static Action onAllowCallback;
|
||||
static Action onDenyCallback;
|
||||
static Action onDenyAndNeverAskAgainCallback;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
DontDestroyOnLoad(gameObject);
|
||||
}
|
||||
|
||||
public static bool IsPermitted(AndroidPermission permission)
|
||||
{
|
||||
#if !UNITY_EDITOR && UNITY_ANDROID
|
||||
using (var permissionManager = new AndroidJavaClass(PackageName))
|
||||
{
|
||||
return permissionManager.CallStatic<bool>("hasPermission", GetPermittionStr(permission));
|
||||
}
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
public static void RequestPermission(AndroidPermission permission, Action onAllow = null, Action onDeny = null, Action onDenyAndNeverAskAgain = null)
|
||||
{
|
||||
#if !UNITY_EDITOR && UNITY_ANDROID
|
||||
using (var permissionManager = new AndroidJavaClass(PackageName))
|
||||
{
|
||||
permissionManager.CallStatic("requestPermission", GetPermittionStr(permission));
|
||||
onAllowCallback = onAllow;
|
||||
onDenyCallback = onDeny;
|
||||
onDenyAndNeverAskAgainCallback = onDenyAndNeverAskAgain;
|
||||
}
|
||||
#else
|
||||
Debug.LogWarning("UniAndroidPermission works only Androud Devices.");
|
||||
#endif
|
||||
}
|
||||
|
||||
private static string GetPermittionStr(AndroidPermission permittion)
|
||||
{
|
||||
return "android.permission." + permittion.ToString();
|
||||
}
|
||||
|
||||
private void OnAllow()
|
||||
{
|
||||
if (onAllowCallback != null)
|
||||
{
|
||||
onAllowCallback();
|
||||
}
|
||||
ResetAllCallBacks();
|
||||
}
|
||||
|
||||
private void OnDeny()
|
||||
{
|
||||
if (onDenyCallback != null)
|
||||
{
|
||||
onDenyCallback();
|
||||
}
|
||||
ResetAllCallBacks();
|
||||
}
|
||||
|
||||
private void OnDenyAndNeverAskAgain()
|
||||
{
|
||||
if (onDenyAndNeverAskAgainCallback != null)
|
||||
{
|
||||
onDenyAndNeverAskAgainCallback();
|
||||
}
|
||||
ResetAllCallBacks();
|
||||
}
|
||||
|
||||
private void ResetAllCallBacks(){
|
||||
onAllowCallback = null;
|
||||
onDenyCallback = null;
|
||||
onDenyAndNeverAskAgainCallback = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Protection level: dangerous permissions 2015/11/25
|
||||
// http://developer.android.com/intl/ja/reference/android/Manifest.permission.html
|
||||
public enum AndroidPermission
|
||||
{
|
||||
ACCESS_COARSE_LOCATION,
|
||||
ACCESS_FINE_LOCATION,
|
||||
ADD_VOICEMAIL,
|
||||
BODY_SENSORS,
|
||||
CALL_PHONE,
|
||||
CAMERA,
|
||||
GET_ACCOUNTS,
|
||||
PROCESS_OUTGOING_CALLS,
|
||||
READ_CALENDAR,
|
||||
READ_CALL_LOG,
|
||||
READ_CONTACTS,
|
||||
READ_EXTERNAL_STORAGE,
|
||||
READ_PHONE_STATE,
|
||||
READ_SMS,
|
||||
RECEIVE_MMS,
|
||||
RECEIVE_SMS,
|
||||
RECEIVE_WAP_PUSH,
|
||||
RECORD_AUDIO,
|
||||
SEND_SMS,
|
||||
USE_SIP,
|
||||
WRITE_CALENDAR,
|
||||
WRITE_CALL_LOG,
|
||||
WRITE_CONTACTS,
|
||||
WRITE_EXTERNAL_STORAGE
|
||||
}
|
||||
Reference in new issue
Block a user