一、隱藏app的icon
1.開啟AndroidManifest.xml檔案,將 LAUCHER 改成 DEFAULT。
這樣在手機裡安裝後就不會在出現icon了!
二、Unity喚起隱藏icon的app
下面會提到兩個app,A是用來開啟的app,B是隱藏icon的app。
1.B在隱藏icon後,在AndroidManifest.xml也要加入開啟的路徑跟名稱
2.A要加入開啟app的程式碼,需要使用Android底層的程式碼,有兩種做法:1.將Android的程式碼匯出成jar包,放入Unity提供使用。2.使用Unity提供的AndroidJavaObject直接呼叫Android的程式碼,但麻煩的是要把java的程式碼轉換成C#使用。
這裡使用的是第2種方法:
(1).使用AndroidJavaObject的類型
private static AndroidJavaObject currentActivity { get { return new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic(2).開啟app的程式碼(已從java轉成c#寫法)("currentActivity"); } }
//使用Uri執行app public void NextStartAppByUri() { if (Application.platform != RuntimePlatform.Android) return;; //設定開啟時要傳遞的參數 string no = ctrlPlayer.Instance().PlayerNo.ToString(); string account = ctrlPlayer.Instance().PlayerId; string password = ctrlPlayer.Instance().PlayerPassword; string sendparameter = "player_no=" + no + "&" + "player_account=" + account + "&" + "password=" + password + "&" + "ip=" + ctrlPlayer.Instance().GuestUrl; Debug.Log("sendparameter = " + sendparameter); AndroidJavaObject intent_obj = null; try { var Intent_class = new AndroidJavaClass("android.content.Intent"); var ACTION_VIEW = Intent_class.GetStatic結語:除了開啟app,當初還寫了其他的功能,像是開啟安裝介面、檢測遊戲是否安裝、app的版本等。我也是用相同的方式完成的,之後再寫另一篇介紹。當初把java轉換成c#時,遇到不少問題,上網找的資料多半是java或是不齊全,轉換的寫法也是一知半解,雖然最後硬是測試成功了。關於jar包的寫法,你可以把Android的java程式碼直接複製進去,Unity在使用的時候,一樣使用AndroidJavaObject來呼叫,但呼叫的是jar裡面定義好的API,使用上簡單許多! d(d'∀')("ACTION_VIEW"); var CATEGORY_BROWSABLE = Intent_class.GetStatic ("CATEGORY_BROWSABLE"); var CATEGORY_DEFAULT = Intent_class.GetStatic ("CATEGORY_DEFAULT"); intent_obj = new AndroidJavaObject("android.content.Intent"); intent_obj.Call ("setAction", ACTION_VIEW); intent_obj.Call ("addCategory", CATEGORY_BROWSABLE); intent_obj.Call ("addCategory", CATEGORY_DEFAULT); //Uri組成 : [scheme] :// [host][path] ? [QueryParameter] = {xxx} & [QureyParameter] = {xxx} var Uri = new AndroidJavaClass("android.net.Uri"); var NameUri = Uri.CallStatic ("parse", "OpenGameApp://start/game" + gameID + "?" + sendparameter); intent_obj.Call ("setData", NameUri); currentActivity.Call("startActivity", intent_obj); } catch (System.Exception e) { Debug.Log("System.Exception = " + e); } currentActivity.Dispose(); intent_obj.Dispose(); if (isExitThisApp) { Application.Quit(); } }
沒有留言:
張貼留言