首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一C#和Layar AndroidJavaException

统一C#和Layar AndroidJavaException
EN

Stack Overflow用户
提问于 2016-12-21 12:12:56
回答 2查看 201关注 0票数 0

我正在尝试将Layar SDK集成到Unity中。但我有些问题。

这是AndroidManifest.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.layar.player"
android:versionCode="1"
android:versionName="8.5.2" >

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="23" />

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.camera" />

<application>
    <activity
        android:name="com.layar.sdk.LayarSDKActivity"
        android:launchMode="singleTask"
        android:screenOrientation="nosensor"
        android:theme="@android:style/Theme.Light.NoTitleBar" />
    <activity
        android:name="com.layar.player.geo.FilterSettingsActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/FilterTheme" />
    <activity
        android:name="com.layar.LayerDetailsActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/LayarTitleTheme" />
    <activity
        android:name="com.layar.WebActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/LayarTitleTheme" />
    <activity
        android:name="com.layar.ShareSocialActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/Layar.Theme.Default" />
    <activity
        android:name="com.layar.VideoActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/FullScreenTheme" />
    <activity
        android:name="com.layar.AudioActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/SmartDialogTheme" />
    <activity
        android:name="com.layar.ScreenshotActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:screenOrientation="nosensor"
        android:theme="@android:style/Theme.Light.NoTitleBar" />
    <activity
        android:name="com.layar.ShareOnFacebookActivity"
        android:theme="@android:style/Theme.Light.NoTitleBar"
        android:windowSoftInputMode="stateAlwaysVisible|adjustResize" />

    <receiver
        android:name="com.layar.localytics.CloseSesionBroadcastReciever"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.layar.close_session" />
        </intent-filter>
    </receiver>
</application>

这是我的c#

代码语言:javascript
复制
using UnityEngine;

public class IntegrationLayar : MonoBehaviour {

private AndroidJavaObject LayarSDK = null;
private AndroidJavaObject activity = null;
private AndroidJavaObject context = null;

private string oauthKey = "code";
private string oauthSecret = "code2";


void Start ()
{
        if (LayarSDK == null)
        {
            using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
                context = activity.Call<AndroidJavaObject>("getApplicationContext");

                //activity.Call("runOnUiThread", new AndroidJavaRunnable(runOnUiThread));
                Debug.Log("unity3D JAVA - Working");
            }

            using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.layar.player"))
            {
                if (pluginClass != null)
                {
                    Debug.Log("Layar Java - Working");
                    pluginClass.CallStatic("initialize", context, oauthKey, oauthSecret);
                    pluginClass.CallStatic("startLayarActivity", context);
                }
            }
    }
}
}

错误

AndroidJavaException: java.lang.ClassNotFoundException: com.layar.player

据我所知,它没有在Java中找到这样一个类。所以问题是什么?我打错电话了?

下面是到Layar 链接的链接

正如我在Layar中看到的那样,类是"LayarVisionSDK“。

代码语言:javascript
复制
AndroidJavaClass pluginClass = new AndroidJavaClass("com.layar.player.LayarVisionSDK")

所以也许这能行?

我当然做错了,但如果你们中的任何人有方向要遵循,我会很高兴地知道:)

更新1 :

这是APK的

代码语言:javascript
复制
Class LayarVisionSDK

java.lang.Object
com.layar.sdk.LayarVisionSDK

所以不要用

代码语言:javascript
复制
AndroidJavaClass pluginClass = new AndroidJavaClass("com.layar.player.LayarVisionSDK")

我在用

代码语言:javascript
复制
AndroidJavaObject LayarVisionSDK = new AndroidJavaObject("com.layar.sdk.LayarVisionSDK");

但还是没有成功。我在问自己是不是问题不在看上去的地方。

更新2 :

好吧!我找到了为什么会出现这个错误,API文档没有被更新,所以我签入了java包,并找到了“初始化”方法。

这是新的c#代码。

代码语言:javascript
复制
using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.layar.sdk.LayarSDK"))
                {
                    if (pluginClass != null)
                    {
                        Debug.Log("SDK LAYAR FOUND !!! ");
                        pluginClass.CallStatic("initialize", context, oauthKey, oauthSecret);
                        Debug.Log("INITIALIZED");
                        //pluginClass.Call("startLayarActivity", context);
                    }
                }

,但我遇到了一个新错误:

代码语言:javascript
复制
AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/ContextCompat;

我错过了一个机器人库吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-22 07:58:27

确保在Plugins/Android/libs文件夹下有android-support-v4.jar。

您可以从这里下载该文件。

票数 1
EN

Stack Overflow用户

发布于 2016-12-22 12:33:55

好的,我要把它做好!

我只是添加了android支持库和kotlin库。

(谢谢你的帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41262585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档