WebView与H5的交互
2016-03-18 17:25
471 查看
H5Activity
js.html
布局文件也加上吧
package com.asker202.myservice; import android.annotation.SuppressLint; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.JavascriptInterface; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; import android.widget.Toast; public class H5Activity extends AppCompatActivity implements View.OnClickListener{ private WebView wv; private Button btn; private String url="file:///android_asset/js.html";//文件放在assets中 @SuppressLint("JavascriptInterface") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_h5); wv= (WebView) findViewById(R.id.wv); btn= (Button) findViewById(R.id.btn); btn.setOnClickListener(this); WebSettings webSettings = wv.getSettings(); webSettings.setSaveFormData(false); webSettings.setJavaScriptEnabled(true);//设置可响应js webSettings.setSupportZoom(false); wv.setWebChromeClient(new WebChromeClient()); wv.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");//注入本地方法 wv.loadUrl(url); } @Override public void onClick(View v) { if(v.getId()==R.id.btn) { wv.loadUrl("javascript:wave()");//调用js方法 } } final class DemoJavaScriptInterface { DemoJavaScriptInterface() { } /** * @author 孙磊磊 * create at 2016/3/16 16:50 * description 4.2及以上版本,需要加 @JavascriptInterface */ @JavascriptInterface public void click() { runOnUiThread(new Runnable() { @Override public void run() { btn.setText("从网页上调用本地方法"); Toast.makeText(H5Activity.this,"从网页上点击了我",Toast.LENGTH_LONG).show(); } }); } } }
js.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <body> <script> function wave() { alert("1"); document.getElementById("text").innerHTML="从Android中调用js"; alert("2"); } function js2android(){ document.getElementById("text").innerHTML="从js中调用Android代码"; demo.click(); } </script> <button type="button" onclick="javascript:demo.click()">点击这里</button> <br/> <button type="button" onclick="windows:demo.click()">点击这里</button> <br/> <button type="button" onclick="demo.click()">点击这里</button> <br/> <button type="button" onclick="js2android()">点击这里</button> <p id="text"></p> </body> </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.asker202.myservice.H5Activity"> <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="调用js"/> <WebView android:id="@+id/wv" android:layout_width="match_parent" android:layout_height="match_parent"></WebView> </LinearLayout>
相关文章推荐
- Android开发入门与实战之Android应用安装卸载
- android中实现view的更新有两组方法
- JSONObject、JSONArray
- iOS xib创建tableViewController顶部留白问题
- Android显示webview加载的网页源码
- iOS应用运行时在设置中更改权限应用崩溃问题
- 微信统一订单
- iOS之百度地图获取地理位置名称
- ios7内购、Game Center 实现 in-App Purchases & Game Center
- iOS CALayer的学习
- @RequestMapping("/myway")
- iOS中.pch文件如何使用
- no debuggable application
- Android 打造底部导航控件
- servlet-mapping
- Html5与App的优缺点
- iOS Share组件整理
- Android四大组件之一 -- Service详解
- 【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- Android LayoutInflater源码分析及使用(二)