Question by
GameDevKaran · Sep 11, 2020 at 12:15 AM ·
crashsdkcrashinggoogleapplication
ARcore "Session.CheckAvailablity().result" getting "Unknown Error" and App Crashes immediately
Hello Devs, i have been trying to solve this problem since couple of weeks and i failed to solve. this problem is with Google AR core SDK and I am using unity 2019.3.1f1 and Latest arcore sdk.
Problem : When i Check Session.CheckAvailablity(); that is fine no exception catches but after when i trying to get result i always recieved "Unkown Error" on Supported Device and Unsupported Device and after that application crashed immediately.
I have reasearched on Internet but i didn't get any Suitable Option for this.
My Script for Checking "Session.CheckAvailablity()" with different types of function:
using System.Collections;
using UnityEngine;
using GoogleARCore;
using UnityEngine.UI;
using System;
public class TestingARSupport : MonoBehaviour
{
[SerializeField] private GameObject LogPrefab;
[SerializeField] private Transform DebugContainer;
public void Check()
{
StartCoroutine(CheckCompatibility());
}
public void Check2()
{
StartCoroutine(CheckCompatibility2());
}
public void Check3()
{
StartCoroutine(CheckCompatibility3());
}
private void CopyToClipBoard(string Txt)
{
CustomNameSpace.Server.Clipboard = Txt;
}
private IEnumerator CheckCompatibility()
{
CreateLog("");
AsyncTask<ApkAvailabilityStatus> checkTask = null;
try
{
checkTask = Session.CheckApkAvailability();
CreateLog("Checking Request Created");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Create \"Checking Request Created\":</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogExeption(e, this);
}
CustomYieldInstruction customYield = checkTask.WaitForCompletion();
/*try
{
customYield = checkTask.WaitForCompletion();
CreateLog("Please Wait Checking Request Has been Sent");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Create \"Checking Request Created\":</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogException(e, this);
}*/
CreateLog("Checking For Result Please Wait");
yield return checkTask.WaitForCompletion();
CreateLog("Result Created Successfuly");
try
{
ApkAvailabilityStatus result = checkTask.Result;
/*try
{
result = checkTask.Result;
CreateLog("Checking Is Completed, result will be soon");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Load Result:</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogException(e, this);
}*/
switch (result)
{
case ApkAvailabilityStatus.SupportedApkTooOld:
CreateLog("Supported apk too old");
break;
case ApkAvailabilityStatus.SupportedInstalled:
CreateLog("Supported and installed");
break;
case ApkAvailabilityStatus.SupportedNotInstalled:
CreateLog("Supported, not installed, requesting installation");
break;
case ApkAvailabilityStatus.UnknownChecking:
CreateLog("Unknown Checking");
break;
case ApkAvailabilityStatus.UnknownError:
CreateLog("Unknown Error");
break;
case ApkAvailabilityStatus.UnknownTimedOut:
CreateLog("Unknown Timed out");
break;
case ApkAvailabilityStatus.UnsupportedDeviceNotCapable:
CreateLog("Unsupported Device Not Capable");
break;
}
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Load Result:</b>" + '\n' + "<color=red>" + e + "</color>");
Debug.LogException(e, this);
}
}
private IEnumerator CheckCompatibility2()
{
CreateLog("");
AsyncTask<ApkAvailabilityStatus> checkTask = null;
try
{
checkTask = Session.CheckApkAvailability();
CreateLog("Checking Request Created");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Create \"Checking Request Created\":</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogExeption(e, this);
}
CreateLog("Checking For Result Please Wait");
while (!checkTask.IsComplete)
{
yield return null;
}
CreateLog("Result Created Successfuly");
try
{
ApkAvailabilityStatus result = checkTask.Result;
/*try
{
result = checkTask.Result;
CreateLog("Checking Is Completed, result will be soon");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Load Result:</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogException(e, this);
}*/
switch (result)
{
case ApkAvailabilityStatus.SupportedApkTooOld:
CreateLog("Supported apk too old");
break;
case ApkAvailabilityStatus.SupportedInstalled:
CreateLog("Supported and installed");
break;
case ApkAvailabilityStatus.SupportedNotInstalled:
CreateLog("Supported, not installed, requesting installation");
break;
case ApkAvailabilityStatus.UnknownChecking:
CreateLog("Unknown Checking");
break;
case ApkAvailabilityStatus.UnknownError:
CreateLog("Unknown Error");
break;
case ApkAvailabilityStatus.UnknownTimedOut:
CreateLog("Unknown Timed out");
break;
case ApkAvailabilityStatus.UnsupportedDeviceNotCapable:
CreateLog("Unsupported Device Not Capable");
break;
}
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Load Result:</b>" + '\n' + "<color=red>" + e + "</color>");
Debug.LogException(e, this);
}
}
private IEnumerator CheckCompatibility3()
{
CreateLog("");
try
{
Session.CheckApkAvailability();
CreateLog("Checking Request Created");
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Create \"Checking Request Created\":</b>" + '\n' + "<color=red>" + e + "</color>");
//Debug.LogExeption(e, this);
}
CreateLog("Checking For Result Please Wait");
while (!Session.CheckApkAvailability().IsComplete)
{
yield return null;
}
CreateLog("Result Created Successfuly");
try
{
ApkAvailabilityStatus result = Session.CheckApkAvailability().Result;
switch (result)
{
case ApkAvailabilityStatus.SupportedApkTooOld:
CreateLog("Supported apk too old");
break;
case ApkAvailabilityStatus.SupportedInstalled:
CreateLog("Supported and installed");
break;
case ApkAvailabilityStatus.SupportedNotInstalled:
CreateLog("Supported, not installed, requesting installation");
break;
case ApkAvailabilityStatus.UnknownChecking:
CreateLog("Unknown Checking");
break;
case ApkAvailabilityStatus.UnknownError:
CreateLog("Unknown Error");
break;
case ApkAvailabilityStatus.UnknownTimedOut:
CreateLog("Unknown Timed out");
break;
case ApkAvailabilityStatus.UnsupportedDeviceNotCapable:
CreateLog("Unsupported Device Not Capable");
break;
}
}
catch (Exception e)
{
CreateLog("<b>Sorry Failed To Load Result:</b>" + '\n' + "<color=red>" + e + "</color>");
Debug.LogException(e, this);
}
}
}
Comment