一、隱藏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("currentActivity");
}
}
(2).開啟app的程式碼(已從java轉成c#寫法)//使用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("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();
}
}
結語:除了開啟app,當初還寫了其他的功能,像是開啟安裝介面、檢測遊戲是否安裝、app的版本等。我也是用相同的方式完成的,之後再寫另一篇介紹。當初把java轉換成c#時,遇到不少問題,上網找的資料多半是java或是不齊全,轉換的寫法也是一知半解,雖然最後硬是測試成功了。關於jar包的寫法,你可以把Android的java程式碼直接複製進去,Unity在使用的時候,一樣使用AndroidJavaObject來呼叫,但呼叫的是jar裡面定義好的API,使用上簡單許多! d(d'∀')


沒有留言:
張貼留言