Как можно вывести полученный url через WebView Unity 3d

259
07 июля 2017, 03:33

Ситуация такая, url который требуется выводится в Debug.Log (http_response.show_url);

Как можно потом этот url отобразить в WebViev?

Вот Код:

    using System.Collections;
    using UnityEngine.Networking;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    public class Json : MonoBehaviour {
        private string domain = "example";
        private string app_name = "test";
        public void Start ()
        {
            StartCoroutine(GetHttpData());
        }
        IEnumerator GetHttpData()
        {
            UnityWebRequest www = UnityWebRequest.Get("http://" + domain + "/?app_n=" + app_name);
            yield return www.Send();
            if(www.isError) {
                Debug.Log(www.error);
            }
            else {
                string http_response_txt = www.downloadHandler.text;
                CustomResponse http_response = JsonUtility.FromJson<CustomResponse>(http_response_txt);

                Debug.Log(http_response_txt);
                Debug.Log(http_response.url);
                Debug.Log (http_response.show_url);
            }
        }
Answer 1

Полагаю вам нужно открыть ваш WebView в диалоге, для этого нужно создать фрагмент с этим WebView.

Layout fragment_webview_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/webView"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
</WebView>

DialogFragment:

public class WebViewDialogFragment extends DialogFragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_webview_dialog, container, true);
        WebView webView = (WebView) view.findViewById(R.id.webView);
        Bundle arguments = getArguments();
        String url = arguments.getString(URL_KEY);
        webView.loadUrl(url);
        return super.onCreateView(inflater, container, savedInstanceState);
    }
    private static final String URL_KEY = "com.companyName.productName.WebViewDialogFragment.URL";
    public static WebViewDialogFragment createDialogFragment(@NonNull String url) {
        WebViewDialogFragment fragment = new WebViewDialogFragment();
        Bundle arguments = new Bundle();
        arguments.putString(URL_KEY, url);
        fragment.setArguments(arguments);
        return fragment;
    }
}

И добавить метод для запуска диалога в Activity:

public class MainActivity extends UnityPlayerActivity {
    // Other code
    public void openWebViewDialog(@NonNull String url) {
        WebViewDialogFragment dialogFragment = WebViewDialogFragment.createDialogFragment(url);
        dialogFragment.show(getFragmentManager(), "WebViewDialogFragment");
    }
}

После этого нужно вызвать метод этой Activity из unity

CustomResponse http_response = JsonUtility.FromJson<CustomResponse>(http_response_txt);
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity");
activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
        {
        activity.Call("openWebViewDialog", new object[] { http_response.url } );
        }));
READ ALSO
Пример использования клиента RIO Sockets

Пример использования клиента RIO Sockets

Прошу привести пример использования RIO сокетов со стороны клиентаНапример, несколько коннектов к разным серверам

188
Hangfire запускать метод в заданное время дня

Hangfire запускать метод в заданное время дня

Здравствуйте! У меня есть массив объектов класса EmployerПочти у всех объектов разные значения времени (Employer

242
Async, await и что я делаю не так?

Async, await и что я делаю не так?

Не очень силён в async/await, не могу понять, что мне студия советует сделать

546
Перенос строки после N символа в c#

Перенос строки после N символа в c#

Видел примеры на различных языках, но для c# не понял как это реализовать, прошу помощиЕсть текст, к примеру 20 символов

597