【问题标题】:how to call Non-static method from Unity Android Plugin?如何从 Unity Android 插件调用非静态方法?
【发布时间】:2018-09-17 11:47:30
【问题描述】:

我想使用这个 java 代码来统一获取 uri 数据 我写了这个脚本代码来调用这个方法,但不起作用

*java

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

*c#

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

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

喜欢这个

*java

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

*c#

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

我尝试了非静态方法,但不起作用

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

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

如何使用android Plugin 获取uri 数据? getIntent() 似乎无法调用静态方法,我该如何获取它?

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

java

package com.s.mylibrary;
import android.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");
}

AndroidManifest

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

html

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

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

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

java

package com.s.mylibrary;
import android.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(token)XDDXLast"

下定决心 "TestThisAPlast"

【问题讨论】:

  • 我正在添加更多细节。谢谢
  • 编辑完成
  • 得到AndroidJavaObject 而不是AndroidJavaClass 会是答案吗?
  • ok 我在底部更新
  • 我发现我使用了错误的名称,我尝试修复

标签: java android unity3d plugins aar


【解决方案1】:

我终于在这篇文章中找到了解决办法

enter link description here

【讨论】:

  • 那个链接给出了 404
  • @palebone 对不起,我的错,现在修好了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2012-12-24
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多