Android:简单的webView与js交互
16lz
2021-12-04
一个简单的交互我就不发效果图了
Html
Carson //点击按钮则调用callAndroid函数
Activity
WebView mWebView;Button button;@SuppressLint("JavascriptInterface")@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView =(WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); // 设置与Js交互的权限 webSettings.setJavaScriptEnabled(true); // 设置允许JS弹窗 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); mWebView.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS类对象映射到js的test对象 // 先载入JS代码 // 格式规定为:file:///android_asset/文件名.html mWebView.loadUrl("file:///android_asset/javascript.html"); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onClick(View v) { // 通过Handler发送消息 mWebView.post(new Runnable() { @Override public void run() { // 注意调用的JS方法名要对应上 // 调用javascript的callJS()方法 mWebView.loadUrl("javascript:callJS()"); } }); } }); // 由于设置了弹窗检验调用结果,所以需要支持js对话框 // webview只是载体,内容的渲染需要使用webviewChromClient类去实现 // 通过设置WebChromeClient对象处理JavaScript的对话框 //设置响应js 的Alert()函数 mWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this); b.setTitle("Alert"); b.setMessage(message); b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); b.setCancelable(false); b.create().show(); return true; } });}
Js交互Android类
package com.wd.androidjs;import android.util.Log;import android.webkit.JavascriptInterface;class AndroidtoJs extends Object{ // 定义JS需要调用的方法 // 被JS调用的方法必须加入@JavascriptInterface注解 @JavascriptInterface public void hello(String msg) { Log.e("my",""+msg); }}
更多相关文章
- android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
- android JNI 学习笔记1
- android三种动画详解
- ui布局参数设置
- Android(安卓)WebView详解(二):Android原生与JS互调
- Android(安卓)布局中的android:onClick的使用方法总结
- 【Android布局】在程序中设置android:gravity 和 android:layout
- 【Android布局】在程序中设置android:gravity 和 android:layout
- android组建属性及使用许可