java与JS的交互

首先写一个JS

Android和JS的交互 - 锐客网
生者为过客,死者为归人。
天地一逆旅,同悲万古尘。

【java与JS的交互】下面是主函数的调用
package com.animee.day16; import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; public class WebJSActivity extends AppCompatActivity {private WebView mWebView; @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_js); mWebView = (WebView) findViewById(R.id.web_js); WebSettings webSettings = mWebView.getSettings(); //设置与Js交互的权限 webSettings.setJavaScriptEnabled(true); //设置允许JS弹窗 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); mWebView.loadUrl("file:///android_asset/myjs.html"); //由于设置了弹窗检验调用结果,所以需要支持js对话框 // webview只是载体,内容的渲染需要使用webviewChromClient类去实现 mWebView.setWebChromeClient(new WebChromeClient()); //让此界面当中的webview的js调用android的代码 mWebView.addJavascriptInterface(new LocalJavaScript(this),"qinlin"); }@TargetApi(Build.VERSION_CODES.KITKAT) public void onClick(View view) { switch (view.getId()) { case R.id.btn_js: //在android当中调用js代码的方法 //第一种方法(常用的) //mWebView.loadUrl("javascript:callJS()"); //第二种方法 (效率高的) mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback() { @Override public void onReceiveValue(String value) { Log.i("Tag11","valuehttps://www.it610.com/article/=="+value); } }); break; } } }

这是JS调用安卓的代码
package com.animee.day16; import android.content.Context; import android.webkit.JavascriptInterface; import android.widget.Toast; /** * Created by Administrator on 2017/11/16. */public class LocalJavaScript {private Context context; public LocalJavaScript(Context context) { this.context = context; } //在js当中调用以下方法,需要加注解@JavascriptInterface @JavascriptInterface public String callFromJS(String str){ Toast.makeText(context,str+"不要看洛克王国,嗯哼!!",Toast.LENGTH_LONG).show(); return "abcdefg"; } }

    推荐阅读