博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android原生代码与html5交互
阅读量:7197 次
发布时间:2019-06-29

本文共 3558 字,大约阅读时间需要 11 分钟。

一、首先是网页端,这个就是一些简单的标签语言和JS函数:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>H5 And Android</title>
<script>
//定义本地方法 效果提供给Android端调用 被调用后将获得参数值
function callH5(data){
  document.getElementById("result").innerHTML="result success for Android to:"+data;
}
//定义本地点击事件 效果调用Android方法 传递参数给Android客服端
function myOnclick(){
  document.getElementById("result").innerHTML="按钮被点击了"
  //调用android本地方法 调用对象由Android定义实例化,调用方法由Android提供 (具体对象名和方法待定,可变更)
  myObj.callAndroid("弹窗显示回调成功了~~~");
}

 

 

js调用android

 

 注册js对象名称为control,方法为toNews,传的是新闻id和新闻类型 
 
WebSettings webSettings = webView.getSettings(); // 设置WebView属性,能够执行Javascript脚本 webSettings.setJavaScriptEnabled(true); // 设置可以访问文件 webSettings.setAllowFileAccess(true); // 设置支持缩放 webSettings.setBuiltInZoomControls(true); webView.addJavascriptInterface(new JavaScriptInterfaces(), "control"); // 加载需要显示的网页 webView.loadUrl(url + "?newsId=" + newsId + "&newsType=" + newsType + "&subjectImg=" + imageUrl); String str = url + "?newsId=" + newsId + "&newsType=" + newsType + "&subjectImg=" + imageUrl; LogUtils.e(url + "?newsId=" + newsId + "&newsType=" + newsType + "&subjectImg=" + imageUrl); // 设置Web视图 webView.setWebViewClient(new webViewClient());// 如果去掉webView会用浏览器加载网络连接
class JavaScriptInterfaces {
JavaScriptInterfaces() {
} @JavascriptInterface public void toNews(long newsId, String accessUrl) {
Intent intent = new Intent(SpecialWebActivity.this, NewsDetailsWebActivity.class); intent.putExtra("newsId", newsId + ""); startActivity(intent); } }

 

</script>
</head>
<body>
  <button id="button" οnclick="myOnclick()">点击调用Android方法</button>
  <p/>
  <div id="result">效果展示</div>
</body>
</html>

二、接下来就是Android中加载web网页,并且设置完成交互了,直接上代码,也有详细注释:

package com.lvyerose.h5andandroid;

import android.annotation.SuppressLint;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

  private WebView mWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);

  mWebView = (WebView) findViewById(R.id.webView);

  initWeb();

}

@SuppressLint({"JavascriptInterface", "SetJavaScriptEnabled"})

void initWeb(){
  //设置编码  
  mWebView.getSettings().setDefaultTextEncodingName("utf-8");
  //支持js
  mWebView.getSettings().setJavaScriptEnabled(true);

  //设置本地调用对象及其接口

  //第一个参数为实例化自定义的接口对象 第二个参数为提供给JS端调用使用的对象名
  mWebView.addJavascriptInterface(new Contact() {

@JavascriptInterface //必须加的注解

@Override
public void callAndroid(String phone) {
  Toast.makeText(MainActivity.this, phone, Toast.LENGTH_LONG).show();
}
}, "myObj");
  //载入js
  mWebView.loadUrl("http://lvyerose.com/h5andAndroid.html");

  findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
  //Android调用Js方法,其中参数 'Android OK !!!' 可传入变量 效果如下:
  // mWebView.loadUrl("javascript:callH5('"+str+"')");
  mWebView.loadUrl("javascript:callH5('Android OK !!!')");

}

});
}
//定义接口,提供给JS调用
interface Contact {
  @JavascriptInterface
  void callAndroid(String phone);

}

 

}

 

转载于:https://www.cnblogs.com/zhaoleigege/p/5310355.html

你可能感兴趣的文章
第一个开源项目---halcon图像显示控件(缩放/roi操作)
查看>>
13.Axis创建webservice客户端和服务端
查看>>
ZOJ 1586-Preliminary Round
查看>>
在 WebBrowser 的任意页面中安装 jQuery 操作页面元素 - IEBrowser [4]
查看>>
21_异常_第21天(异常、企业面试题,思维导图下载)
查看>>
XHTML基础
查看>>
牛客多校第五场 E room 二分图匹配 KM算法模板
查看>>
4.06 一次向多个表中插入记录
查看>>
2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) ...
查看>>
采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
查看>>
Longest Consecutive Sequence
查看>>
bash快捷建-光标移到行首、行尾等
查看>>
PHP+mysql系统报错:PHP message: PHP Warning: Unknown: Failed to write session data (files)
查看>>
【转】浅谈CSRF攻击方式
查看>>
-21.jpg
查看>>
出库发货扫描检测软件(方案)
查看>>
vue中axios的使用与封装
查看>>
java list几种性能比较
查看>>
学习笔记之FluentAssertions
查看>>
JavaScript高级程序设计(第三版)学习笔记11、12、17章
查看>>