/** *权限要求 *在Java方面进行Rationale的处理等 * @param permission * @param callback */ public static IEnumerator GrantPermission(string permission, OnPermission callback) { Debug.Log(TAG + "GrantPermission:" + permission); if (!HasPermission(permission)) { grantResult = PermissionGrantResult.PERMISSION_DENY; isPermissionRequesting = true; using (AndroidJavaClass clazz = new AndroidJavaClass(FQCN_PLUGIN)) { clazz.CallStatic("grantPermission", AndroidUtils.GetCurrentActivity(), permission); } float timeElapsed = 0; while (isPermissionRequesting) { if ((PermissionTimeoutSecs > 0) && (timeElapsed > PermissionTimeoutSecs)) { isPermissionRequesting = false; yield break; } timeElapsed += Time.deltaTime; yield return null; } callback(permission, grantResult); } else { callback(permission, PermissionGrantResult.PERMISSION_GRANT); } yield break; }
/** * パーミッション要求 * こっちはJava側でRationaleの処理等を行う * @param permission * @param callback */ public static IEnumerator GrantPermission(string permission, OnPermission callback) { #if (!NDEBUG && DEBUG && ENABLE_LOG) Console.WriteLine($"{TAG}GrantPermission:{permission}"); #endif if (!HasPermission(permission)) { grantResult = PermissionGrantResult.PERMISSION_DENY; isPermissionRequesting = true; using (AndroidJavaClass clazz = new AndroidJavaClass(FQCN_PLUGIN)) { clazz.CallStatic("grantPermission", AndroidUtils.GetCurrentActivity(), permission); } float timeElapsed = 0; while (isPermissionRequesting) { if ((PermissionTimeoutSecs > 0) && (timeElapsed > PermissionTimeoutSecs)) { isPermissionRequesting = false; yield break; } timeElapsed += Time.deltaTime; yield return null; } callback(permission, grantResult); } else { callback(permission, PermissionGrantResult.PERMISSION_GRANT); } yield break; }
/** * 请求照相机权限 * @param callback */ public static IEnumerator GrantCameraPermission(OnPermission callback) { Debug.Log(TAG + "GrantCameraPermission:"); if (CheckAndroidVersion(23)) { // Android 9以后,访问UVC设备也需要CAMERA权限 yield return GrantPermission(PERMISSION_CAMERA, callback); } else { // 不满Android 6的话不需要权限要求处理 callback(PERMISSION_CAMERA, PermissionGrantResult.PERMISSION_GRANT); } yield break; }
/** * カメラパーミッションを要求 * @param callback */ public static IEnumerator GrantCameraPermission(OnPermission callback) { #if (!NDEBUG && DEBUG && ENABLE_LOG) Console.WriteLine($"{TAG}GrantCameraPermission:"); #endif if (CheckAndroidVersion(23)) { // Android9以降ではUVC機器アクセスにもCAMERAパーミッションが必要 yield return GrantPermission(PERMISSION_CAMERA, callback); } else { // Android 6 未満ではパーミッション要求処理は不要 callback(PERMISSION_CAMERA, PermissionGrantResult.PERMISSION_GRANT); } yield break; }