Ситуация такая, 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);
}
}
Полагаю вам нужно открыть ваш 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 } );
}));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Прошу привести пример использования RIO сокетов со стороны клиентаНапример, несколько коннектов к разным серверам
Здравствуйте! У меня есть массив объектов класса EmployerПочти у всех объектов разные значения времени (Employer
Не очень силён в async/await, не могу понять, что мне студия советует сделать
Видел примеры на различных языках, но для c# не понял как это реализовать, прошу помощиЕсть текст, к примеру 20 символов