为啥 unityplayer.SkipPermissionsDialog 不能与统一 2018.3.14 一起使用?

Posted

技术标签:

【中文标题】为啥 unityplayer.SkipPermissionsDialog 不能与统一 2018.3.14 一起使用?【英文标题】:Why unityplayer.SkipPermissionsDialog not working with unity 2018.3.14?为什么 unityplayer.SkipPermissionsDialog 不能与统一 2018.3.14 一起使用? 【发布时间】:2020-03-06 17:33:54 【问题描述】:

我正在使用 unity 和 vuforia 开发应用程序并使用

<meta-data android:name=“unityplayer.SkipPermissionsDialog” android:value=“true”>

在 Manifest.xml 中跳过启动权限。我在 unity 5.1.1 中的应用程序导出(apk)工作正常,但在 untiy 2018.3.14 中无法正常工作。我将使用 unity 2018.3.14 创建另一个项目并编辑manifest.xml 上面有一行,但它仍然在启动时要求相机权限。

这是我的 manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools"
    android:installLocation="preferExternal">
    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"/>
  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application
        android:theme="@style/UnityThemeSelector"
        android:icon="@mipmap/app_icon"
        android:label="@string/app_name">
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:label="@string/app_name"
                  android:hardwareAccelerated="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
      <!-- For Runtime Permission -->
      <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
      <activity android:name="com.onevcat.uniwebview.UniWebViewFileChooserActivity" />

    </application>  
</manifest>

有什么帮助吗?

【问题讨论】:

【参考方案1】:

初步猜测

如果您设置了unityplayer.SkipPermissionsDialog,Unity 将不会在应用启动后直接请求权限。

但 Vuforia 会在启用 AR 相机时动态请求运行时权限。 我猜你在第一个场景中使用的是 AR 相机?

更新 1

尝试将 AndroidManifest.xml 中的 unityplayer.SkipPermissionsDialog 移动到活动标记而不是应用程序标记内。

【讨论】:

我在第二个场景中使用 AR 相机。我的另一个使用 unity5.1.1 的项目也可以正常工作,另外我在 unity2018.3.14 中创建空项目并在第二场景中使用 AR 相机,但我遇到了同样的问题。谢谢 @Rooz 尝试将 AndroidManifest.xml 中的 unityplayer.SkipPermissionsDialog 移动到活动标签而不是应用程序标签内。 我在发布此问题之前尝试过,但不起作用。请检查forum.unity.com/threads/… 你能用到目前为止你已经尝试过的所有内容更新你的问题吗? 感谢您的帮助。但最后我尝试了另一种方法来解决问题。【参考方案2】:

所以,我尝试了另一种方法来解决问题。

1- 选中延迟初始化框(窗口->Vuforia 配置)。

2- 正常使用&lt;meta-data android:name=“unityplayer.SkipPermissionsDialog” android:value=“true”&gt; 并在需要时请求权限。

3- 将这行代码添加到这个新脚本的 Start() 函数中,并将其分配给空的游戏对象:

VuforiaRuntime.Instance.InitVuforia();

4- 因此,当用户允许时,我会加载第二个场景并运行 Vuforia 初始化。

【讨论】:

以上是关于为啥 unityplayer.SkipPermissionsDialog 不能与统一 2018.3.14 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?