在android webview中使用JavaScript
我试图从我的web视图中的JavaScript界面开始一个活动。 这个例子显示了一个敬酒。 我怎么可以打电话给class级而不是吐司?
public class JavaScriptInterface { Context mContext; /** Instantiate the interface and set the context */ JavaScriptInterface(Context c) { mContext = c; } /** Show a toast from the web page */ public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } }
这为html页面。
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> <script type="text/javascript"> function showAndroidToast(toast) { Android.showToast(toast); }
您必须先在您的webview上注册JavaScriptInterface。 JavaScriptInterFace可以是一个内部类,如下所示。 这个类将有一个函数,你可以从HTML页面调用(通过javaScript),在这个函数中你可以编写代码来改变活动。
这是你的工作解决scheme:
public class JavascriptInterfaceActivity extends Activity { /** Called when the activity is first created. */ WebView wv; JavaScriptInterface JSInterface; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); wv = (WebView)findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true); // register class containing methods to be exposed to JavaScript JSInterface = new JavaScriptInterface(this); wv.addJavascriptInterface(JSInterface, "JSInterface"); wv.loadUrl("file:///android_asset/myPage.html"); } public class JavaScriptInterface { Context mContext; /** Instantiate the interface and set the context */ JavaScriptInterface(Context c) { mContext = c; } @android.webkit.JavascriptInterface public void changeActivity() { Intent i = new Intent(JavascriptInterfaceActivity.this, nextActivity.class); startActivity(i); finish(); } } }
这是html页面
<html> <head> <script type="text/javascript"> function displaymessage() { JSInterface.changeActivity(); } </script> </head> <body> <form> <input type="button" value="Click me!" onclick="displaymessage()" /> </form> </body> </html>
希望这可以帮助…
您还需要在Android代码中的changeActivity
方法的顶部添加@ android.webkit.JavascriptInterface注释, changeActivity
在Android 4.2或更高版本上运行。 看到这个链接更多。