0


0

WebView、AndroidでJavaScript値を評価する

そのページにあるWebViewページを開きます

  var addToBasketDisabled=false;
  var iPhoneStatus="";
  function GetStatus()
  {
    return iPhoneStatus;//Master Pagelerde tanımlı
  }

  var path = "http://www.yemeksepeti.com/App_Themes/Default_tr-TR/images/IPhone/";
  function PreLoadDisabledButton()
  {
    var image = new Image();
    image.src=path + "Iphone-button-ekle-pasif.png";
  }

  function DisableAddButton()
  {
    addToBasketDisabled= true;
    var buttonObject = document.getElementById("ctl00_AddToBasket");
    buttonObject.src = path + "Iphone-button-ekle-pasif.png";
  }

  function EnableAddButton()
  {
    addToBasketDisabled= false;
    var buttonObject = document.getElementById("ctl00_AddToBasket");
    buttonObject.src = path + "Iphone-button-ekle.png";
  }

  function OnAddButtonClick()
  {
    if(addToBasketDisabled)
    {
      return false;
    }
    DisableAddButton();
    var validateValue= ValidateInput();
    if(!validateValue)
    {
      EnableAddButton();
      return false;
    }
  }
  PreLoadDisabledButton();

これらのjavascript WebViewのボタンを押すと、「iPhoneStatus」値を読み取ってWebView画面を閉じて結果を決定する必要があります。

これらのコードを.javaクラスで記述しました

mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

mWebView.loadUrl(feedurl);
final class DemoJavaScriptInterface
{

  DemoJavaScriptInterface()
  {
  }

  public void clickOnAndroid()
  {
    mHandler.post(new Runnable()
    {
      public void run()
      {
        mWebView.loadUrl("javascript: GetStatus()");
      }
    });
  }
}

final class MyWebChromeClient extends WebChromeClient
{
  public void onCloseWindow(WebView window)
  {
    window.destroy();
  }
  public boolean onJsAlert(WebView view, String url, String message, JsResult result)
  {
    Log.i("log ", message);
    result.confirm();
    return true;
  }
}

しかし、onJsAlertメソッドには決して入りません。GetStatus()の値を評価する方法はありますか

ありがとう

1 Answer


3


ステップ#1: demo`オブジェクトに、パラメーターとして GetStatus() `の値を受け取るメソッドを実装させます。

ステップ#2:「mWebView.loadUrl( "javascript:…​")」を呼び出します。「…​」はURLエンコードされたJavascriptソースコードのスニペットで、「GetStatus()」を呼び出してその値を「デモ」オブジェクト。