簡體   English   中英

Unity Android Intents

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM