This follows on from the previous post.
At this stage, we have a working app that can load a webpage, with Javascript enabled. The next step is to allow us to use the native features on the device, through the webview. Examples of this include:
A new class needs to be created in the MainActivity.java
file, after the onCreate()
method, like so:
public class jsBridge {
Context mContext;
/** Instantiate the interface and set the context */
jsBridge(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showMessage(String message) {
Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
}
}
Note: If eclipse shows a load of errors for some of the variables, hover over the error, and select import
___.
We then assign this to our webView
, like so
webView.addJavascriptInterface(new jsBridge(this), "Android");
Then, on our HTML page, we can add the Javascript that would natively show a message on the device:
<script type="text/javascript">
Android.showMessage("Hello!");
</script>
There are hundreds more features that can be added to the JavaScriptInterface
, for example, controlling the camera, recording audio, making the device vibrate, enabling WiFi, using the compass or getting information like the battery level.
For more examples of specific features, leave a comment.