2013-02-08 36 views
2

我已經找到很多關於如何從android調用JavaScript的例子。但它不適合我。我的目標SDK是17(android 4.2)。這就是我如何加載從我的活動我的html頁面:如何調用Android中的JavaScript 4.2

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    myWebView = (WebView)findViewById(R.id.mapwebview1); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    JavaScriptHandler jScriptHandler = new JavaScriptHandler(this); 
    WebChromeClient myWebChromeClient = new WebChromeClient(); 
    myWebView.setWebChromeClient(myWebChromeClient); 
    myWebView.addJavascriptInterface(jScriptHandler, "MyHandler"); 

    myWebView.loadUrl("file:///android_asset/mywebpage.html"); 
    myWebView.loadUrl("javascript:myFunc()"); 


} 

這裏是我的JavaScriptHandler代碼:

public class JavaScriptHandler { 
//TabFragmentMap mapFragment; 
Context context; 
//Fragment fragment; 

public JavaScriptHandler (Context c){ 
    this.context = c; 
} 

}

這裏是我的html代碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>PhoneGap</title> 
</head> 
<body onload="myFunc()"> 
<h1 id="test1">Hello World</h1> 
<input type="button" value="Say hello" onClick="moveMyself()" /> 
<div id="myDiv"></div> 
<script type="text/javascript"> 


    function myFunc() 
    { 

     document.getElementById('test1').innerHTML = 'Good Morning'; 

    } 

</script> 
</body> 
</html> 
+0

做了你一個機會,是指(http://stackoverflow.com/questions/20243686/android- [此鏈接]回調函數從Java腳本到Java)我希望這會對你有所幫助。 – chain 2014-03-18 07:10:50

回答

-1
+0

感謝您的回答。但這些鏈接與我所做的沒有什麼不同。它不是幫助我:( – learner 2013-02-08 12:41:55

+0

我可以從html JavaScript調用一個android功能,但我不能做其他的方式:從android到JavaScript :( – learner 2013-02-08 12:46:19

+0

我沒有清楚地理解你的概念 – 2013-02-08 12:48:07

2

試試這個:

final WebView webview = (WebView)findViewById(R.id.browser); 
/* JavaScript must be enabled if you want it to work, obviously */ 
webview.getSettings().setJavaScriptEnabled(true); 

/* WebViewClient must be set BEFORE calling loadUrl! */ 
webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) 
    { 
     webview.loadUrl("javascript:(function() { " + 
       "document.getElementsByTagName('body')[0].style.color = 'red'; " + 
       "})()"); 
    } 
}); 

webview.loadUrl("http://code.google.com/android"); 
+0

哇..這是工作。很努力。謝謝你的幫助。現在我必須調用一個已經存在的JavaScript函數。如果你知道任何事情,請給我一些提示。 – learner 2013-02-08 14:29:56

+0

我終於可以做到了。非常感謝您的大力幫助。請參閱下面我的答案如何做到這一點。 – learner 2013-02-08 14:34:51

2

它實際上是同一件事,Tamilarasi給了我。如果有人想打電話從HTML現有的JavaScript函數,請執行下列操作:

myWebView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url){ 
      myWebView.loadUrl("javascript:myFunc()"); 
     } 
}); 
myWebView.loadUrl("file:///android_asset/myHtml.html"); 
相關問題