首先添加权限:<uses-permission android:name="android.permission.INTERNET"/>

布局文件:

<RelativeLayout 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"
tools:context=".MainActivity" > <TextView
android:id="@+id/preNums"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:text="当前进度:0%" /> <WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/preNums" /> </RelativeLayout>

  

html5页面代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;"/>
<meta name="format-detection" content="telephone=no"/>
<title>手机网页</title>
<style>
*{ padding:0px; margin:0px;}
div{ margin:0px auto;}
.mytop{ height:60px; background-color:#000000; text-align:center;}
.myfont{ color:#FFFFFF; font-size:16px; font-weight:bold; line-height:60px;}
.mytest{ background-color:#FF0000; margin:20px auto; width:100px; height:100px; border-radius:50px; box-shadow:8px 8px 8px #0000FF; line-height:100px; text-align:center;}
</style>
<script>
function ChangeDiv(){
//document.getElementById("insertDiv").innerHTML='哈哈';
//调用java代码
MyAndroid.MyFun("哈哈可以调用");
} // 被java调用的方法
function ToJavaFun(outstr){
document.getElementById("insertDiv").innerHTML=outstr;
}
</script>
</head> <body> <div class="mytop">
<a href="http://www.baidu.com" class="myfont">前往百度</a>
</div> <div class="mytest" id="insertDiv">
</div> <div style="text-align:center; padding:10px;">
<input name="" type="button" value="执行" onClick="ChangeDiv('你好');" >
</div>
</body>
</html>

  

java代码:

package com.example.mywebview;

import android.os.Bundle;
import android.os.Handler;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import android.widget.Toast; /*
* author:future
*
* sijienet.com
*
* */ @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
public class MainActivity extends Activity { WebView webView;
TextView textView;
Handler handler; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); handler = new Handler(); webView = (WebView) findViewById(R.id.webView1);
textView = (TextView) findViewById(R.id.preNums); // 开启js接口模式
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyAndroidFun(), "MyAndroid"); webView.setWebViewClient(new MyWebClient());
webView.setWebChromeClient(new MyChrome());// 配置默认参数 webView.loadUrl("file:///android_asset/index.html");
} class MyChrome extends WebChromeClient { @Override
public void onProgressChanged(WebView view, int newProgress) {
// 进度更新
textView.setText("当前进度:" + newProgress + "%");
super.onProgressChanged(view, newProgress);
} } class MyAndroidFun {// 调用类作用于 @JavascriptInterface
public void MyFun(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT)
.show(); handler.post(new Runnable() { @Override
public void run() {
// TODO Auto-generated method stub
String outString = "我的内容";
webView.loadUrl("javascript:ToJavaFun('" + outString + "')");
}
}); } } @Override
public void onBackPressed() {
// TODO Auto-generated method stub
if (webView.canGoBack()) {
webView.goBack();
}
// super.onBackPressed();
} class MyWebClient extends WebViewClient { @Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
if (url != null && url.length() > 0) { if (url.indexOf("http://") != -1
|| url.indexOf("https://") != -1) {// 不存在 } else {
// 添加前缀
url = "http://" + url;
} view.loadUrl(url);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
} } }

  

android控件之webview和js与java交互的更多相关文章

  1. (转载)android控件之WebView控件缩小

    android控件之WebView控件缩小 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-16我要评论 发现这个控件挺好用,能自已控制进度条,而且这个控件的功能非常壮大,先上个简单的 ...

  2. Android控件之WebView

    如何在Android应用中打开Web网站呢?谷歌为我们提供了解决方案,现在就让我们一起看一下WebView控件吧. 为了方便总结,就以实现下面这个效果为主线,进行总结: 首先我们先看一下它的布局文件吧 ...

  3. Android 控件: Webview 的一些知识点

    WebView 加载网页,当点击返回键的时,会显示上一个页面,并刷新. 同时可以对返回上一个页面进行干预,就是用到了缓存. webview加载网页的几个模式,即websetting中设置的加载模式.w ...

  4. 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互

    [源码下载] 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互 作者: ...

  5. 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图

    [源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...

  6. 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互

    [源码下载] 重新想象 Windows 8.1 Store Apps (80) - 控件增强: WebView 之基本应用, POST 数据, 与 JavaScript 交互 作者:webabcd 介 ...

  7. Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)

    本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...

  8. 重新想象 Windows 8 Store Apps (8) - 控件之 WebView

    原文:重新想象 Windows 8 Store Apps (8) - 控件之 WebView [源码下载] 重新想象 Windows 8 Store Apps (8) - 控件之 WebView 作者 ...

  9. Robotium之Android控件定位实践和建议

    本人之前曾经撰文描述Appium和UIAutomator框架是如何定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议Appium基于安卓的各种FindEl ...

随机推荐

  1. HDU3555 Bomb —— 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others)    M ...

  2. Collections工具类、Map集合、HashMap、Hashtable(十八)

    1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和 ...

  3. javaScript实现增删改查

    自己写的一个html+javaScript实现增删改查小实例.下面是js代码​1. [代码][JavaScript]代码   //1.创建受捐单位数组var arrOrgData = [    { & ...

  4. Struts2的各种标签库

    1 在JSP中使用taglib编译指令导入标签库 <%@ taglib prefix="s" uri="/struts-tags" %> ----- ...

  5. Objective-C Runtime(一)预备知识

    很早就知道了Objective-C Runtime这个概念,「Objective-C奇技淫巧」「iOS黑魔法」各种看起来很屌的主题中总会有它的身影:但一直没有深入去学习,一来觉得目前在实际项目中还没有 ...

  6. 「LuoguP3381」【模板】最小费用最大流

    Description 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. Input 第一行包含四个正整数N.M.S.T,分别表 ...

  7. Struts2 关于返回type="chain"的用法.

    1.转自:https://blog.csdn.net/wuye/article/details/73274852   功能与redirect的action转发类似,不过与redirectaction转 ...

  8. linux下ping不通的解决方法

    转自:https://blog.csdn.net/weixin_33400820/article/details/80227702 今天在做练习的时候,发现如何都无法ping通外网,在经过各种网络求助 ...

  9. 用Python在局域网根据IP地址查找计算机名

    1.要使用socket模块 代码如下: import sys, socket # hostname = socket.gethostname()# print("Host name:&quo ...

  10. Android 布局之GridLayout(转载)

    转载:http://www.cnblogs.com/skywang12345/p/3154150.html 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式 ...