2017-02-22 41 views
0

У меня есть активность android, которая хранит веб-представление, и у меня есть страница, которая содержит локальную переменную marks. Локальная переменная будет увеличена, если пользователь получит правильный ответ. На веб-странице есть кнопка с именем exit, которая должна закрыть веб-страницу и вернуться к активности в андроиде, и она должна нести локальную переменную marks и обратно. Я хочу спросить, как кнопка выхода можно сделать на веб-странице, чтобы закрыть страницу и вернуть локальную переменную с помощью Javascript и как активность в android получит локальную переменную с веб-страницы.android studio webview получить данные и onfinish

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

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.setWebViewClient(new WebViewClient()); 
     webview.loadUrl("file:///android_asset/index.html"); 
    } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    setContentView(webview); 
} 

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

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

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

function finish() {} 

ответ

0

Чтобы уведомить приложение-хост о завершении загрузки страницы. Тогда позвони onPageFinished()

webview.setWebViewClient(new WebViewClient() { 

    public void onPageFinished(WebView view, String url) { 
     // do your stuff here 
    } 
}); 

SOURCE

+0

Но как деятельность получает локальную переменную и как Javascript может быть сделано, чтобы вернуться и вызвать функцию onPageFinish() в андроида деятельности? – androidnewbie

0

вы можете сделать один thing..On нажмите на выходе вызов любого URL, как http://../getmark?marks=2 и один раз Загрузить URL в WebView финишного/выхода из WebView. В своей деятельности

webView.setWebViewClient(new WebViewClient() { 

    public void onPageFinished(WebView view, String url) { 
     // parse the url here to get marks 
    } 
}); 
+0

Но как я называю URL? Поскольку 'location.href = http: //../getmark? Marks = 2' не работает в webview – androidnewbie

+0

И как Javascript можно сделать для возврата и вызвать функцию 'onPageFinish()' в активности android? – androidnewbie

0

Зарегистрировать javascriptinterface вашей WebView в OnCreate:

this.webview.addJavascriptInterface(new MyJSInterface(this), "Android"); 

Реализовать метод setCount в вашей деятельности:

public void setCount (int count) { 
    //do what ever you want with count 
} 

сделать новый JavascriptInterface-Class:

public class MyJSInterface { 
    private YourActivity yourActivity = null; 
    public MyJSInterface (YourActivity yourActivity) { 
     this.yourActivity = yourActivity; 
    } 

    @JavascriptInterface 
    public void invoke (int count) { 
      this.yourActivity.setCount(count); 
    } 
} 

И в JavaScript:

function finish(marks) { 
    if (Android !== undefined) { 
     if (Android.invoke !== undefined) { 
      Android.invoke(marks); 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^