如何在统一构建的 Android 应用中请求权限?

Posted

技术标签:

【中文标题】如何在统一构建的 Android 应用中请求权限?【英文标题】:How to ask for permissions in a Android app built with unity? 【发布时间】:2021-06-28 10:36:01 【问题描述】:

我正在 Unity Engine 中开发基于 AR 的 android 应用。但是当应用程序在移动设备上启动时,我无法请求相机权限。我已在 UnityManifest.xml 文件中包含权限,但仍未获得权限弹出窗口。每次我必须在手机上手动授予权限。

这是我的 UnityManifest.xml

<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
  <application android:isGame="true">
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="portrait" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
    <meta-data android:name="unity.arcore-enable" android:value="True" />
    <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
    <meta-data android:name="unity.splash-mode" android:value="0" />
    <meta-data android:name="unity.splash-enable" android:value="True" />
    <meta-data android:name="unity.build-id" android:value="c8f8e11e-0c30-4e36-8c0c-f779764a3099" />
  </application>
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
  <uses-feature android:name="android.hardware.camera" android:required="false" />
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
  <uses-feature android:name="android.hardware.camera.front" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

【问题讨论】:

【参考方案1】:

Unity 中有一个框架可以在您需要权限之前请求权限。

https://docs.unity3d.com/Manual/android-RequestingPermissions.html

【讨论】:

以上是关于如何在统一构建的 Android 应用中请求权限?的主要内容,如果未能解决你的问题,请参考以下文章

我的 Android 应用程序请求我没有要求的位置权限 [重复]

如何从 Android 应用程序中启动统一游戏?

如何从 Android Marshmallow 中的服务请求权限

我在统一 android 构建方面遇到问题

Android棉花糖请求权限?

是否可以使用cordova设置自定义权限请求