2017-02-22 40 views
-1

Предыдущий пост отсюда android studio webview get data and onfinish. На самом деле я не могу получить то, что хочу от этих ответов. Возможно, я должен попросить его более четко. Я фактически использовал webview для загрузки страницы контента. Затем внутри страницы содержимого есть некоторые ссылки, которые также являются локальным html, созданным мной. Итак, поток похож наВеб-просмотр Android получает текущий URL-адрес и проверяет, содержит ли он строку

Активность андроида -> веб-просмотр -> страница содержания -> страница игры.

На самом деле я хочу получить локальную переменную marks на странице игры. Поэтому я создал кнопку exit, которая используется для закрытия страницы и обратно к активности андроида, а также переносит marks обратно в андроид.

Так что я искал некоторую информацию сам и обнаружил, что window.close() не работает. Поэтому я изменяю текущий URL-адрес, чтобы указать, что нажата кнопка выхода. А затем извлеките marks из URL-адреса и сохраните его в активности Android. Но это не работает с моими кодами ниже, я думаю, что это, вероятно, из-за того, что метод используется, когда я нахожусь на странице содержания. Надеюсь, кто-то может это сделать, потому что я действительно не могу найти проблему. Я редактировал коды, как показано ниже:

Моя деятельность в андроида:

private WebView webview; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //setContentView(R.layout.activity_main); 

    webview = new WebView(this); 
    webview.getSettings().setJavaScriptEnabled(true); 

    try {    
     webview.loadUrl("file:///android_asset/index.html"); 
     webview.setWebViewClient(new WebViewClient() 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      if (url.contains("?marks=")){ 
      finish();} // close activity 
      else{ 
      view.loadUrl(url);} 

      return true; 
     }); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    setContentView(webview); 
} 

Моя кнопка выхода является ДИВ:

<div class="exit" onclick="finish()">Exit</div> 

Я собираюсь использовать функцию finish() вернуть переменную и закройте веб-страницу, чтобы вернуться к активности в android.

function finish() { 
    document.location.href= window.location.href +"?marks=" + marks; 
} 

ответ

0

Хорошо, я думаю, что решается вопрос, как и webview.loadUrl должны быть помещены в конце. webview.setWebViewClient (новый WebViewClient()

webview.setWebViewClient(new WebViewClient() 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     if (url.contains("?marks=")){ 
     finish();} // close activity 
     else{ 
     view.loadUrl(url);} 

     return true; 
    }); 

    webview.loadUrl("file:///android_asset/index.html");