Android teaches you how to interact with WebView and JS in five minutes

Android teaches you how to interact with WebView and JS in five minutes

[[189497]]

Background: Android API provides WebView component to realize HTML rendering. Now HTML5, CSS3, JS related development technology, and data exchange format json/XML. Skills of Web development engineers. In order to reduce excessive dependence on Android, some HTML is usually embedded in native Android.

In this way, js data interaction is inevitable.

We create a simple layout with only one webview control

  1. <android:id= "@+id/webView"  
  2. android:layout_width= "fill_parent"  
  3. android:layout_height= "wrap_content"  
  4. />

We find this webView and load the local main.html, where main.html is stored in the assets root directory of the project file.

  1. WebView webView = (WebView) findViewById(R.id.webView);
  2. webView.addJavascriptInterface(newJSObject(context), "aikaifa" );
  3. WebSettings webSettings = webView.getSettings();
  4. webSettings.setJavaScriptEnabled( true );//Support js
  5. Handler handler = new Handler();
  6. handler.postDelayed(new Runnable() {
  7. public void run() {
  8. webView.loadUrl( "file:///android_asset/main.html" );
  9. }
  10. }, 500);

1.js calls Android method

If you are careful, you should notice that there is a JSObject class above. Yes, this is the entry point, so that the front-end js can call the methods written on our Android side. The "aikaifa" can be understood as a mark, which can be changed to whatever you like.

Let's take a look at the JSObject class:

  1. public class JSObject {
  2. private Context context;
  3. public JSObject(Context context){
  4. this.context=context;
  5. }
  6. @JavascriptInterface
  7. public void goBack({
  8. Activity activity = (Activity) context;
  9. activity.finish();
  10. }
  11. }

This class defines the goBack method, which can be called by injecting JS.

If you want to call the goBack method in js, you can call it like this: aikaifa.goBack().

In this way, the front end can easily call our Android methods.

2.Android calls JS method

Since js can call our methods, we also call js methods

For example, we want to call the getName method in js.

We can write it like this.

  1. public void getTestJS()
  2. {
  3. Timertimer = new Timer();
  4. final Handler handler = new Handler(){
  5. public void handleMessage(Message msg) {
  6. switch (msg.what) {
  7. case 1:
  8. webView.loadUrl( "javascript:getName()" );
  9. break;
  10. }
  11. super.handleMessage(msg);
  12. }
  13. };
  14. timer.schedule(new TimerTask() {
  15. public void run() {
  16. Message msg = new Message();
  17. msg.what = 1;
  18. handler.sendMessage(msg);
  19. }
  20. }, 500, 500);
  21. }

The getName method is a method in js, and we can call the getTestJS method where needed.

In this way, the interaction between WebView and js is roughly completed.

[This article is an original article by 51CTO columnist "Hong Shengpeng". Please contact the original author for reprinting.]

Click here to read more articles by this author

<<:  iOS AFNetworking framework HTTPS request configuration

>>:  Aiti Tribe Story Collection (16): Best Practices for Technical People During Their Fatigue Period

Recommend

Tips for setting up a Baidu information flow account!

If information flow is spending money to buy traf...

Insights into advertising on traffic platforms in Q1 2020

This article selects six major mainstream mobile ...

「User acquisition」The core of new product user growth

When it comes to growth, the first thing that com...

What kind of new world will smart fashion open up?

Now, smart watches dominate the smart wearable de...

OS X El Capitan and Yosemite receive Safari 10 update

Today, Apple released the official version of mac...

How to make money in 2021? A course to earn 70,000 yuan a month with Excel!

25 exquisite video lessons, with real teachers te...

Nangong Guoer "Pinduoduo Product Planning and Explosive Product Creation"

This Taobao series of courses explains in all asp...