[英]Unity Android Intents
我正在嘗試使用Unity中的Intents啟動Android應用程序。 使用我編寫的代碼,我可以打開應用程序,但我正在嘗試將其啟動到該應用程序內的特定操作。
我在網站上找到了我想要的鏈接,但它的格式不正確: intent://placeID=370731277#Intent;scheme=robloxmobile;package=com.roblox.client;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.roblox.client;end
當我點擊網站上的這個鏈接時,它會將應用程序啟動到我想要的狀態(具體來說,它啟動游戲的ID為370731277)
我查看了AndroidManifest.xml,發現了這個:
<activity android:name="com.roblox.client.ActivityProtocolLaunch" android:noHistory="true">
<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="robloxmobile" />
</intent-filter>
</activity>
這似乎是鏈接運行的活動。
我的Unity代碼(C#)如下
string data = "robloxmobile://placeID=370731277";
string package = "com.roblox.client";
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", package);
AndroidJavaObject uriData = uriClass.CallStatic<AndroidJavaObject>("parse", data);
launchIntent = launchIntent.Call<AndroidJavaObject>("setData", uriData);
currentActivity.Call("startActivity", launchIntent);
這成功打開了應用程序,但是游戲(id 370731277)
我覺得我擁有我需要的一切,我只是不理解某些東西 - 任何幫助都會非常感激!
結束修復它 - 主要是通過反復試驗,我發現我必須對我想要運行的活動非常具體。 我必須告訴它活動,動作和方案+數據。 這是我新的工作代碼。
string url = "robloxmobile://placeID=370731277";
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriData = uriClass.CallStatic<AndroidJavaObject>("parse", url);
AndroidJavaObject i = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", "com.roblox.client");
i.Call<AndroidJavaObject>("setClassName", "com.roblox.client", "com.roblox.client.ActivityProtocolLaunch");
i.Call<AndroidJavaObject>("setAction", "android.intent.action.VIEW");
i.Call<AndroidJavaObject>("setData", uriData);
currentActivity.Call("startActivity", i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.