Unity 呼叫安卓方法
阿新 • • 發佈:2019-02-18
關於Unity與安卓互動的方法,網上的教程很多,但是大部分要繼承UnityPlayerActivity 額大概是這個類吧,領會精神。
那麼問題來了,加入我們已經有一個SDK繼承了怎麼辦。
解決思路是這養的,我們在C#中獲取Unity的acitvity,然後當作引數傳入安卓方法:
Unity:
安卓端:AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject unityActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"); using (AndroidJavaObject jo = new AndroidJavaObject("com.klondike.solitaire.spider.Classic.SDKBridge")) { jo.Call("PluginCall", unityActivity); Debug.Log("呼叫安卓方法"); } Java: public void PluginCall(Activity activity) { Log.d("PluginCall","CALLALLLLL"); } //通過這種方法,可以不必在MainActivity修改,直接啟動相關SDK
額 後米那是我在嘗試模仿SDK的方法通過不新增activity的子類進行view的跳轉和變化,從而徹底拜託對包名的依賴,做出通用的SDK,希望有大佬路過指導一下哦 PS:賣萌、暖床、打王者我都會哦MainActivity.java public void ShowMsg(Activity activity,String msg) { Intent intent = new Intent(activity.getBaseContext(),HelloWorld.class); intent.putExtra("type", msg); activity.startActivity(intent); } HelloWorld.java public class HelloWorld extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); // TextView showMsg = (TextView) findViewById(R.id.android_show); String type = this.getIntent().getStringExtra("type"); // showMsg.setText(type); } }