簡體   English   中英

如何從Unity Android插件調用非靜態方法?

[英]how to call Non-static method from Unity Android Plugin?

我想使用此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插件獲取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(令牌)XDDXLast”

依賴“ TestThisAPLast”

我終於在本文中找到了解決方案

在此處輸入鏈接說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM