首先写一个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";
}
}