有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从Unity Android插件调用非静态方法?

我想用这个java代码在unity中获取uri数据 我编写此脚本代码是为了调用此方法,但不起作用

*爪哇

public String GetUri(){
    Intent intent = getIntent();
    Uri intentData = intent.getData();
    return intentData.getQueryParameter("token");
}

*c#

TextShow.text += ajc.Call<string>("GetUri");

经过多次测试,我发现只有静态方法可以调用unity

像这样

*爪哇

public static String DoSthInAndroid3()
{
    return "33333";
}

*c#

TextShow.text += ajc.Call<string>("DoSthInAndroid3");

我尝试非静态的方法,但不工作

public String DoSthInAndroid3()
{
    return "33333";
}

TextShow.text += ajc.Call<string>("DoSthInAndroid3");

如何使用安卓插件获取uri数据? getIntent()似乎无法在静态方法中调用,如何获取它

-----------更新-----------------

爪哇

package com.s.mylibrary;
import 安卓.net.Uri;
import com.unity3d.player.UnityPlayerActivity;
public class AndroidPlugin extends UnityPlayerActivity {
    public static String GetString(){
        return"TestThisPlugin";
    }

    public String GetUri(){
        Uri intentData = getIntent().getData();
        return intentData.getQueryParameter("token");
    }
}

c#

void GetAndroidUri()
{
    var ajc = new AndroidJavaClass("com.s.mylibrary.AndroidPlugin"); //(1)
    TextShow.text += ajc.CallStatic<string>("GetString");
    TextShow.text += ajc.CallStatic<string>("GetUri");
    TextShow.text += ajc.Call<string>("GetUri");
}

雄激素单

      <intent-filter>
        <action 安卓:name="安卓.intent.action.VIEW"/>
        <category 安卓:name="安卓.intent.category.DEFAULT" />
        <category 安卓:name="安卓.intent.category.BROWSABLE" />
        <data 安卓:scheme="justlovepaohuzi" 安卓:host="hmok" 安卓:pathPrefix="/UserToekn"/>
      </intent-filter>

html

        <a href="justlovepaohuzi://hmok/UserToekn/?token=123456999"> Open3 </a>  

--------------更新-----------------

我修复了方法名并尝试了新的打印代码,我发现我仍然无法获得非静态方法,没有错误消息,但仍然与预期不同

爪哇

package com.s.mylibrary;
import 安卓.net.Uri;
import com.unity3d.player.UnityPlayerActivity;
public class AP extends UnityPlayerActivity{
    public static String GetString(){
        return "TestThisAP";
    }
    public String GetString2(){
        return "AAAAAA";
    }
    public String GetUri(){
        Uri uri = getIntent().getData();
        return uri.getQueryParameter("token")+"XDDX";
    }
}

c#

void GetAndroidUri()
{
    var ajc = new AndroidJavaClass("com.s.mylibrary.AP");
    TextShow.text += ajc.CallStatic<string>("GetString");
    TextShow.text += ajc.Call<string>("GetString2");
    TextShow.text += ajc.Call<string>("GetUri");
    TextShow.text += "Last";
}

重列字符串

期望 “TestThisAPAAAAAA(令牌)XDDXLast”

重演 “TestThisAPLast”


共 (1) 个答案