这是Unity代码。
嗨,我正在尝试使用Unity登录插件。我把java文件放在Unity和自定义AndroidManifest和build.gradle。
构建成功,但当我点击登录按钮时,什么也没有发生。
我认为这是上下文的问题。但是我是初学者,所以我不知道我应该做什么。:(请帮帮我!!!!!!!!
这是Unity代码。using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Login : MonoBehaviour
{
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
AndroidJavaObject unityContext;
AndroidJavaClass plugin;
private void Awake()
{
//Get Unity Context
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
unityContext = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
plugin = new AndroidJavaClass("com.company.example.javaPlugin");
}
public void NavLogin()
{
plugin.Call("CallAndroid", unityContext);
}
}
这是java代码。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class javaPlugin extends UnityPlayerActivity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Log.d("#####", "onCreate()");
super.onCreate(savedInstanceState);
}
public void CallAndroid(Context context)
{
this.context = context;
Log.d("#####", "CallAndroid()");
Intent loginIntent = new Intent(this, naverLogin.class);
context.startActivity(loginIntent);
}
@Override
public void onBackPressed() {
Log.d("#####", "onBackPressed()");
//super.onBackPressed();
}
}
编辑Java
package com.company.example;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class javaPlugin extends UnityPlayerActivity {
private Context context;
Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Log.d("#####", "onCreate()");
super.onCreate(savedInstanceState);
}
public void CallAndroid(Activity activity)
{
this.activity = activity;
Log.d("#####", "CallAndroid()");
Intent loginIntent = new Intent(this, naverLogin.class);
activity.startActivity(loginIntent);
}
@Override
public void onBackPressed() {
Log.d("#####", "onBackPressed()");
//super.onBackPressed();
}
}
编辑统一using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Login : MonoBehaviour
{
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
//AndroidJavaObject unityContext;
AndroidJavaClass plugin;
public void Start()
{
//Get Unity Context
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
//unityContext = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
plugin = new AndroidJavaClass("com.company.example.javaPlugin");
}
public void NavLogin()
{
plugin.Call("CallAndroid", unityActivity);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Login : MonoBehaviour
{
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
AndroidJavaObject unityContext;
AndroidJavaClass plugin;
private void Awake()
{
//Get Unity Context
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
unityContext = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
plugin = new AndroidJavaClass("com.company.example.javaPlugin");
}
public void NavLogin()
{
plugin.Call("CallAndroid", unityContext);
}
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class javaPlugin extends UnityPlayerActivity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Log.d("#####", "onCreate()");
super.onCreate(savedInstanceState);
}
public void CallAndroid(Context context)
{
this.context = context;
Log.d("#####", "CallAndroid()");
Intent loginIntent = new Intent(this, naverLogin.class);
context.startActivity(loginIntent);
}
@Override
public void onBackPressed() {
Log.d("#####", "onBackPressed()");
//super.onBackPressed();
}
}
package com.company.example;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class javaPlugin extends UnityPlayerActivity {
private Context context;
Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Log.d("#####", "onCreate()");
super.onCreate(savedInstanceState);
}
public void CallAndroid(Activity activity)
{
this.activity = activity;
Log.d("#####", "CallAndroid()");
Intent loginIntent = new Intent(this, naverLogin.class);
activity.startActivity(loginIntent);
}
@Override
public void onBackPressed() {
Log.d("#####", "onBackPressed()");
//super.onBackPressed();
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Login : MonoBehaviour
{
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
//AndroidJavaObject unityContext;
AndroidJavaClass plugin;
public void Start()
{
//Get Unity Context
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
//unityContext = unityActivity.Call<AndroidJavaObject>("getApplicationContext");
plugin = new AndroidJavaClass("com.company.example.javaPlugin");
}
public void NavLogin()
{
plugin.Call("CallAndroid", unityActivity);
}
}
我已经创建了一个演示项目来帮助你。
有c#类:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
var javaClass = new AndroidJavaClass("com.company.example.Test");
javaClass.CallStatic("CallAndroid", unityActivity);
}
}
Java类:
package com.company.example;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.content.Context;
public class Test {
static Activity _activity;
public static void CallAndroid(Activity activity)
{
_activity = activity;
Log.d("#####", "CallAndroid() - Telemetry is fine.");
//Continue doing what you need...
}
}
请确保您创建了这样的java类:
截图脚本后端是IL2CPP。