webView中JavaScript调用Android方法
来源:互联网 发布:字幕下载软件 编辑:程序博客网 时间:2024/06/05 23:42
注:要在Manifest.xml注册访问网络权限
<!-- 访问网络权限 --><uses-permission android:name="android.permission.INTERNET" />
1,建立assets文件夹
注: 原来我们在使用Eclipse时,assets文件夹会在res/下面,可是在android studio中你在res/下面建立完之后,根本就不认。android studio把assets文件夹放到了和java,res文件夹同级的地方
2,在activity_search.xml布局文件中建立WebView用于显示html文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.sdlj.vehiclerepair.activity.SearchActivity"> <WebView android:id="@+id/wv_search_result" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
3,自定义MyObject.java类,用于暴露方法给JavaScript
public class MyObject { Context mContext; public MyObject(Context c){ mContext = c; } //该方法将会暴露给JavaScript脚本调用 /** * @JavascriptInterface 尼玛,这个一定要在调用的方法上加,不加访问不到该方法,太坑了 */ @JavascriptInterface public void showToast(String name){ Toast.makeText(mContext,name+",您好!",Toast.LENGTH_LONG).show(); } //该方法将会暴露JavaScript脚本调用 /** * @JavascriptInterface 尼玛,这个一定要在调用的方法上加,不加访问不到该方法,太坑了 */ @JavascriptInterface public void showList(){ //显示一个普通的列表对话框 new AlertDialog.Builder(mContext) .setTitle("图书列表") .setIcon(R.mipmap.ic_launcher) .setItems(new String[]{"疯狂java讲义","疯狂Android讲义","轻量级java EE企业应用实战"},null) .create() .show(); }}
4,在assets文件夹下建立一个demo2.html文件
<!DOCTYPE html><html> <head> <meta http-equiv="content-type" content="demo1.html"; charset="utf-8"> <title>JS调用Android</title> </head> <body> <!--注意此处的myObj是Android暴露出来的对象--> <input type="button" value="打招呼" onclick="myObj.showToast('孙悟空');"> <input type="button" value="图书列表" onclick="myObj.showList();"> </body></html>
5,在Activity中调用
public class SearchActivity extends AppCompatActivity { public static final String TAG = "ZCN_SearchActivity"; private WebView wvSearchResult; WebSettings webSettings; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); initView(); } @SuppressLint("JavascriptInterface") private void initView() { wvSearchResult = (WebView)findViewById(R.id.wv_search_result); wvSearchResult.loadUrl("file:///android_asset/demo2.html"); //获取Webview的设置对象 webSettings = wvSearchResult.getSettings(); //开启JavaScript调用 webSettings.setJavaScriptEnabled(true); //将MyObject对象暴露给JavaScript脚本 //这样在demo2.html页面中的JavaScript也可以通过myObj来调用MyObject的方法 wvSearchResult.addJavascriptInterface(new MyObject(this),"myObj"); }}
阅读全文
0 0
- webView中JavaScript调用Android方法
- Android webView中调用JavaScript
- Android的Webview中,javascript如何调用java方法
- Android的Webview中,javascript如何调用java方法
- Android的Webview中,javascript如何调用java方法
- Android中WebView实现Javascript调用Java类方法
- Android webview中JavaScript与Java方法的相互调用
- Android中WebView通过JavaScript调用Native方法
- WebView 中的 JavaScript 调用 Android 的方法
- 使用WebView中的JavaScript调用Android方法
- WebView调用Javascript方法
- Android Webview中调用本地java方法
- Android WebView中使用Java调用JavaScript方法并获取返回值
- android webview中使用Java调用JavaScript方法并获取返回值_Android
- android中webview调用js方法,js调用java方法
- Android Webview和JavaScript交互--JS调用Android方法
- ANDROID WEBVIEW和JAVASCRIPT交互_JS调用ANDROID方法
- Android 使用WebView中的JavaScript调用Android方法
- python3爬虫 爬取图片,爬取新闻网站文章并保存到数据库
- BeanCopier系列之三:缓存BeanCopier提升性能
- 【区块链】Truffle合约交互
- 第二周项目二
- StratoIO WebPrinter的几种打印方案,打印机池、并行打印、框架打印、移动端打印
- webView中JavaScript调用Android方法
- Java工程师成神之路
- nRF52832 — NFC脚(P9/P10)配置为普通GPIO口
- 访问网页-网络如何工作
- 用Eclipse创建一个Maven Web项目
- 两种O(nlogn)级别的排序,归并排序和快速排序
- springboot入门
- Android 手机和盒子遥控器
- 阿里云lamp、lnmp环境搭建