Vive FocusWave Unity SDKWaveVR_PermissionManager.requestPermissionsを使うとAndroidでおなじみのパーミッションダイアログを出せる。しかし、Unity2018.2でビルドしたアプリでダイアログのOKボタンを押してもコールバックが返ってこない。Unity2018.1やUnity2018.3だと問題なくコールバックは返ってくる。
Unity2018.2ではAndroidJNIHelper.ConvertFromJNIArraybool[]char[]に変換すると例外が投げられてしまうのが原因で、以下のように修正すれば動く。

  1. diff --git a/Assets/WaveVR/Scripts/WaveVR_PermissionManager.cs b/Assets/WaveVR/Scripts/WaveVR_PermissionManager.cs
  2. index 7e70e3a..3af6524 100644
  3. --- a/Assets/WaveVR/Scripts/WaveVR_PermissionManager.cs
  4. +++ b/Assets/WaveVR/Scripts/WaveVR_PermissionManager.cs
  5. @@ -189,7 +189,7 @@ public class WaveVR_PermissionManager {
  6. AndroidJavaObject boolbuffer = resultObject.Get<AndroidJavaObject>("result");
  7. if ((boolbuffer) != null && (boolbuffer.GetRawObject() != IntPtr.Zero))
  8. {
  9. - resultArray = AndroidJNIHelper.ConvertFromJNIArray<bool[]>(boolbuffer.GetRawObject());
  10. + resultArray = AndroidJNI.FromBooleanArray(boolbuffer.GetRawObject());
  11. Log.i(LOG_TAG, "ConvertFromJNIArray to bool array : " + resultArray.Length);
  12. }

他のAndroid向けSDKで地味にはまってる人いそうな気がするけどどうなんだろう。