Отправка данных из приложения Unity в приложение Android при нажатии кнопки - PullRequest
0 голосов
/ 11 октября 2019

У меня есть два приложения, одно из которых - Android-приложение Java, а другое - приложение Unity

Приложение Unity распознает объект и показывает некоторые детали. То, что я хочу сделать, - если пользователь нажимает кнопку, которая отображается при идентификации объекта, я хочу отправить эту информацию в приложение Java для Android, чтобы приложение могло использовать эти данные для выполнения определенных функций. Как я могу отправить данные и переключиться с Unity на Java-приложение для Android после того, как пользователь нажмет кнопку?

РЕДАКТИРОВАТЬ: Для любого, кто ищет ответ. Мне удается сделать это с помощью кода ниже

В приложении UNITY:

    public void LaunchAppMessage()
    {
        string bundleId = "com.example.sidenavtest";
        bool fail = false;
        string message = "message";
        AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject packageManager = ca.Call<AndroidJavaObject>("getPackageManager");
        AndroidJavaObject launchIntent = null;

        try
        {
            launchIntent = packageManager.Call<AndroidJavaObject>("getLaunchIntentForPackage", bundleId);
            launchIntent.Call<AndroidJavaObject>("putExtra", "arguments", message);
        }
        catch (System.Exception e)
        {
            fail = true;
        }

        if (fail)
        {
            Application.OpenURL("https://google.com");
        }
        else
        {
            ca.Call("startActivity", launchIntent);
        }
        up.Dispose();
        ca.Dispose();
        packageManager.Dispose();
        launchIntent.Dispose();
    }

В приложении Android



    @Override
    protected void onStart() {
        super.onStart();
        Bundle extras = getIntent().getExtras();
        String userName;

        if (extras != null) {
            userName = extras.getString("arguments");

        }
    }


Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Если я вас правильно понимаю, вы хотите, чтобы оба приложения были на одном устройстве. Простейшим способом было бы сохранить данные в файл в приложении для единства и прочитать из этого файла в приложении для Android. Но я думаю, что вы можете даже прикреплять данные к вызовам приложений, так что вам даже не нужно временно их сохранять. Открытие приложения для Android от Unity также возможно. Здесь кто-то задал тот же вопрос и получил какой-то рабочий ответ.

Редактировать: Из того, что я могу собрать, вы можете передавать свои данные с помощью намерений, похоже, что большинство людей работают с JAR-Плагин , откуда вы можете сделать намеренный вызов.

0 голосов
/ 11 октября 2019

Я бы предложил использовать функции RESTApi Get () и Post (). Вы можете создать формат JSON в Интернете и использовать приложение Unity для POST значений, которые вы хотите отправить. В приложении для Android вы можете использовать функцию GET () для извлечения значений.

Этого вы можете достичь через сеть Unity, то есть через UnityWebRequest.Post с WWWForm, а на Android есть библиотека, которая называетсяМодификация, которая обрабатывает HTTP-ответ от REST API.

...