【VR】Cardboard SDK造成沒有裝置授權的問題

21 2月, 2019

【VR】Cardboard SDK造成沒有裝置授權的問題



最近遇到了一個問題,使用Cardboard SDK導入Unity後,
發現在【安卓】裝置安裝時,Camera鏡頭竟然沒有做用戶授權。


沒有讓使用者選擇Camera授權。會導致一個很嚴重的問題,
假設用戶預設是關閉授權的話,這個服務會因此無法正常運行。

在詢問谷哥後,終於大致找到原因。

原因:
因為導入Cardboard SDK後,SDK會自動「跳過」授權
至於為什麼會跳過,
目前猜測是因為Cardboard SDK 在安卓的設定預設就是跳過。

解決方式:
將安卓的AndroidManifest.xml添加或變更
<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />

讓跳過授權改為false。就可以解決問題。

實際流程:
(1)更改或添加AndroidManifest.xml  (路徑在Asset\Plugins\Android\)
(2)AndroidManifest.xml 內容為下 (主要是SkipPermissionsDialog這個)
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
android:installLocation="preferExternal"
android:theme="@android:style/Theme.NoTitleBar"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
<uses-feature android:name="android.hardware.camera" />
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:debuggable="false">
<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
</activity>
</application>
</manifest>
<!-- android:installLocation="preferExternal" -->

張貼留言