標籤:void start 直接 style tar ssi activity 多個 檔案的
Unity調用Android的方法網上有許多,這裡就不在贅述了,然而我們調用AndroidSDK時,一般都是繼承UnityPlayerActivity,然後我們從MainActivity中啟動我們的SDK。
那麼問題來了,假如在一個已經添加了Unity的SDK,並且其已經繼承UnityPlayerActivity時,我們該如何在不修改器Java檔案的情況下執行我們的SDK呢。
思路:在C#中擷取UnityPlayerActivity類,並且將其作為參數傳入方法。
1 Unity: 2 ``` 3 AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 4 AndroidJavaObject unityActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"); 5 using (AndroidJavaObject jo = new AndroidJavaObject("com.klondike.solitaire.spider.Classic.SDKBridge")) 6 { 7 jo.Call("PluginCall", unityActivity); 8 Debug.Log("調用安卓方法"); 9 }10 Java:11 public void PluginCall(Activity activity)12 {13 Log.d("PluginCall","CALLALLLLL");14 }15 16 通過這種方法,可以不必在MainActivity修改,直接啟動相關SDK17 ```18 安卓端19 ```20 MainActivity.java21 public void ShowMsg(Activity activity,String msg)22 {23 Intent intent = new Intent(activity.getBaseContext(),HelloWorld.class);24 intent.putExtra("type", msg);25 activity.startActivity(intent);26 }27 28 HelloWorld.java29 public class HelloWorld extends Activity30 {31 @Override32 protected void onCreate(Bundle savedInstanceState) {33 super.onCreate(savedInstanceState);34 // setContentView(R.layout.activity_main);35 // TextView showMsg = (TextView) findViewById(R.id.android_show);36 String type = this.getIntent().getStringExtra("type");37 // showMsg.setText(type);38 }39 }40 ```
Unity添加多個安卓SDK解決衝突