当前位置: 首页 > news >正文

餐饮类网站建设达到的作用seo单页面优化

餐饮类网站建设达到的作用,seo单页面优化,兼职日结app,校园网站开发毕业论文前言 在没有跨平台框架之前,为了达到兼容的目的,大家都用WebView去嵌套网页,安卓和IOS之间也可以达到同样的效果,那安卓中的WebView是如何与网页进行交互的呢? JS 调用安卓方法 原理 JS 调用 Android,用到…

前言

在没有跨平台框架之前,为了达到兼容的目的,大家都用WebView去嵌套网页,安卓和IOS之间也可以达到同样的效果,那安卓中的WebView是如何与网页进行交互的呢?

JS 调用安卓方法

  • 原理

JS 调用 Android,用到了JNI,大概含义是将注册监听的方法,通过一些类转成Javascript语句,由WebView加载进来。

  • 实现

整体代码比较简单,注意其中的对应关系

MainActivity

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WebView mWebView =findViewById(R.id.webView);WebSettings webSettings = mWebView.getSettings();// 打开开关,设置与Js交互的权限webSettings.setJavaScriptEnabled(true);mWebView.addJavascriptInterface(new JSBridge(),"bridge");// 加载JS代码mWebView.loadUrl("http://192.168.2.52:3001/test.html");}public class JSBridge {// @JavascriptInterface 必须加上@JavascriptInterfacepublic void print(String msg) {System.out.println("JS调用了Android的print方法");}}
} 

loadUrl 可以是项目中asset文件夹下的文件,也可以是一个http地址。
JSBridge 中的注解必须要加,是靠注解识别本地监听方法。

 <WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent" /> 

HTML

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>title</title><script>function callAndroid(){bridge.print("js去调用了android中的print方法");}</script>
</head>
<body>
<button type="button" id="button1" onclick="callAndroid()">点击按钮调用</button>
</body>
</html> 

其中bridge.print在原生方法中已经有定义。

安卓调用JS方法

  • 原理

由于JS很灵活,使用JS动态注入的思想,可以让安卓调用到JS方法。就像在浏览器的控制台,你写好js,它也可以改变或者调用网页上的东西。

  • 实现
public class MainActivity2 extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);WebView mWebView =findViewById(R.id.webView);WebSettings webSettings = mWebView.getSettings();webSettings.setJavaScriptEnabled(true); // 设置与Js交互的权限webSettings.setJavaScriptCanOpenWindowsAutomatically(true);// 设置允许JS弹窗mWebView.loadUrl("http://192.168.2.52:3001/test2.html");Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 通过Handler发送消息mWebView.post(new Runnable() {@Overridepublic void run() {// 调用javascript的callJS()方法mWebView.loadUrl("javascript:callJS()");}});}});mWebView.setWebChromeClient(new WebChromeClient());}
} 

mWebView.setWebChromeClient 是为了让前段的弹窗顺利弹出。

<?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=".MainActivity2"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="测试" /><WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout> 

HTML

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Carson_Ho</title><script>function callJS(){alert("Android调用了JS的callJS方法");}</script>
</head>
</html> 

callJS 就是安卓调用的方法。

写在最后

在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。

如果你觉得自己学习效率低,缺乏正确的指导,可以扫码,加入我们资源丰富,学习氛围浓厚的技术圈一起学习交流吧!

http://www.lbrq.cn/news/2588779.html

相关文章:

  • 电商网站建设外包关键词下载
  • 360做网站经常打骚扰电话优化大师卸载不了
  • 学校建设网站目标陕西网站制作
  • 驻马店360网站建设线上平台推广方式
  • php动态网站开发 项目教程百度客服工作内容
  • 大连英文网站建设百度一下就一个
  • 石家庄哪里有网站建设青岛网站推广关键词
  • 常州男科医院哪一个好长沙seo 优化选智投未来no1
  • dw做的网站如何上传云服务器神马关键词快速排名软件
  • wordpress优酷插件下载福州百度快照优化
  • 做性的网站有哪些今日重大新闻头条
  • 可以做渗透测试的网站可以进入任何网站的浏览器
  • 重复建设政务网站宁波网络营销公司
  • 朋友做的网站图片不显示不出来的北京seo技术交流
  • 网站上传的图片怎么做的清晰竞价托管收费标准
  • 做海鱼的网站广州关于进一步优化疫情防控措施
  • 物业服务网站建设单页网站怎么优化
  • 搭建网站需要多少钱在线识别图片找原图
  • wordpress4.8.3安装长沙网站推广排名优化
  • 网站备案需要关站成人职业培训机构
  • 专业的网站开发公司2020年关键词排名
  • 网站建设前台功能网络建站工作室
  • 建站什么程序好凡科建站教程
  • 建设银行网站会员基本信息武汉seo优化
  • 海口建网站营销渠道方案
  • 上海徐汇网站建设公司广告接单平台app
  • 用sublime做的网站打不开品牌线上推广方案
  • 高端的深圳网站页面设计免费推广软件
  • 大学生网站建设方案平台推广是做什么
  • 厦门哪家网站建设最好厉害的seo顾问
  • 【OS】操作系统概述
  • 【Linux】System V - 基于建造者模式的信号量
  • 13.Redis 的级联复制
  • 云轴科技ZStack AI翻译平台建设实践-聚焦中英
  • 面经——电子电路技术知识详解
  • 机械臂的轨迹生成的多种方案