b+c 模式 H5 与 Android 混合 开发详解

h5混合APP开发 前段时间有人问我怎样用H5开发app,我恰好知道就把步骤粘出来,有不懂的地方给我留言,我再修改。--博客园老牛大讲堂 思想:首先用Hbuilder开发工程,把自己的工程粘贴到APICloud的工程里面。然后用网上的APICloud的内容打包内容。 环境:Hbuilder,夜神模拟器,APICloud开发工具。 提示:因为APICloud因为提示功能不好,所以建议如果想开发就用Hb 阅读详情
    h5 ios android 简介:
    概念: 
    加载网址
    加载网页
    加载网页字符串
    点击内容的时候 会调到浏览器 我们可以让其在当前页展示:h5 可以利用WebView,做一款app,混合开发,如果只是展示数据的话,只仅仅给你一个网址,就可以去访问了。

    h5 : 优点 变化比较快,界面都放在服务器上了,服务器的网页一遍,界面全都变了。
    h5 做布局变化很简单,服务端一改变,手机上全就变了,布局,快,变化快
    缺点: 下载数据的时候,除了真实想展示给用户的以外,还下载了样式,宽,色,点击色
    未点击色,滑动操作,都是网页下载下来的,下载数据量大,同样内容,下载的数据量要在原生的4-5倍。h5 页面加载速度慢

    若: 你将H5 打在apk 里,速度要快 缺点不灵活了 变化小了

    优点: 在android ios iba 文件 都可以用,写一个页面相当于写了两个页面
    android webView 加载它即可,ios 相应控件加载

    windosphone  使用极少 h5 也可展示同样效果 架一个壳子 

    h5 优点 跟java 差不多 一次编译 倒出运行 电商类的h5 做的 比原生好
    缺点 : h5 做传输 加密很难,本身就是字符串形式 传递到本地的
    无法做安全性比较高的,h5 再发展的,对 android 比对 ios 冲击大
    应用类市场 被h5 冲击

    andorid 嵌入式,智能家居,物联网,android 比ios 优势,可以在任何地方编译
    运行

    缺点 : 原来 c比java 快20 倍,h5 运行很慢
    h5 渲染一个页面 和 原生布局 渲染一个界面 10倍左右时间,


    java 抢了 很多 c 语言的工作 服务器 嵌入式 
    很多东西 无法比较 c 无法做硬件的访问
    c 可以直接访问 硬件 ,java 则写不了驱动 

    编程语言排名 java c c++ 

    Ios 硬件软件 兼容性高

    原生应用 : 访问网页的时候布局是 变不了的 只能是数据发生变化的。

b+c 模式使用 :

        在原生 app 中嵌入,html5 :
xml布局文件中,引入webView控件:
activity 中 loadUrl 即可
## 使用:怎么用 LSO ##

        //webView 控件获取  设置ulr 设置在客户端显示,还是浏览器显示  
          assert webView!=null;
          webView.loadUrl("http://www.baidu.com");

        //设置 界面在当前窗口跳转不打开网页
          webView.setWebViewClient(new WebViewClient());


        // 让 webView 可以后退
        @Override
        public void onBackPressed() {

        if (webView.canGoBack()) {
            //webView Can go back
            webView.goBack();
        }

        // if isn't can call father method
        super.onBackPressed();
    }

点击html 按钮,调用 android 代码:

     在html 代码中我们可以调用 js, 利用webView 我们也可,加载html 界面,也可以,在html onClick 事件 中触发app 的代码,下面以吐司为例,

① 在main目录下,新建assets 文件夹,里边放个 html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function jstest(){
            document.getElementById("btn").textContent = "hhhhh"
        }
    </script>
</head>
<body>
    <button id="btn" onclick="obj.test('来自于HTML 5')">点我</button>
</body>
</html>

② MainActivity 目录下先建一个 类 JsInterface

package com.example.liyang.webviewforcsdn;

import android.content.Context;
import android.webkit.JavascriptInterface;
import android.widget.Toast;


public class JsInterface {
    private Context context;

    public JsInterface(Context context) {
        this.context = context;
    }

    @JavascriptInterface
    public void test(String text){//方法名test与 html中方法名一致
        Toast.makeText(context, "html调用java后台代码"+text, Toast.LENGTH_SHORT).show();
    }
}

MainActivity 中代码:

package com.example.liyang.webviewforcsdn;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

    private WebView web_id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        assert web_id!=null;
        web_id = (WebView) findViewById(R.id.web_id);

        // load Html code
        loadHtml();


    }

    /**
     * loadHtml to app
     */
    private void loadHtml() {
        InputStream html =null;
        ByteArrayOutputStream bos = null;
        try {
            html = getAssets().open("test.html");
             bos = new ByteArrayOutputStream();
            byte[] byff = new byte[1<<10];
            int len;
            while((len=html.read(byff))!=-1){
                bos.write(byff,0,len);
            }
            String str = bos.toString();
            web_id.loadData(str,"text/html;charset=utf-8","utf-8");

            //start js
            web_id.getSettings().setJavaScriptEnabled(true);

            // join native interface
            web_id.addJavascriptInterface(new JsInterface(this),"obj");


        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (html!=null){
                try {
                    html.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }



}

在 android 点击按钮 调用js 代码,执行 js 事件
下边为按钮的监听事件

  @Override
    public void onClick(View v) {

        int id = v.getId();
        switch (id){
            case R.id.btn_id:

                // execute js code
                web_id.loadUrl("javascript:jstest()");

                break;

        }

    }

    //override


    @Override
    public void onBackPressed() {

        if (web_id.canGoBack()) {
            web_id.goBack();
        }
        else 
        super.onBackPressed();

    }
Android Hybrid混合开发 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。 阅读详情

相关推荐

Android&H5混合开发

这几天,后台和我身边的同事一直在讨论H5和Android交互的问题。前端说他们调不了Android 拍照。。。。。 反正讨论的很精彩,,,最后,我接盘。。。懵逼啊,没搞过啊。 于是乎度娘问了一番。好像不是很难,对,不难。我这菜鸟十分钟搞定了。他们搞了几天没毛消息,唉。无语。 不说了,再吐槽一下。谁tm一星期写四五十个接口的页面,急得我心急上火。 直接上代码。 没去看过GitHub上是否有封装好。自...

zwq_c的博客 727

混合开发:Android和H5(JS)交互

混合开发,不仅仅显示一个WebView,有时还需要本地Java代码与HTML中的JavaScript进行交互,Android也对交互进行了很好的封装。例如:点击网页中的按钮,调用Android中的原生对话框;点击网页中的电话号码,调用Android中的拨号APP。

UrasakiNakajima的博客 1万+

移动开发必学:JSBridge 的核心原理与最佳实践

在“全民APP”时代,混合开发(Hybrid)已成为主流:APP 中大量页面用 H5 实现(开发快、更新灵活),但核心功能(如支付、定位)仍依赖原生能力。JSBridge 的核心通信原理(双向交互)主流实现方案(URL 拦截、API 注入)实战中的常见问题与解决方法(回调管理、安全校验)跨平台最佳实践本文从“为什么需要 JSBridge”出发,用生活案例解释核心原理,再通过代码实战演示具体实现,最后总结避坑指南与未来趋势。H5 调 Native:通过 URL 拦截或 API 注入发送请求(带。

移动开发前沿的博客 1074

Android——最简单的 Android Web 混合开发

Android——最简单的 JS H5 交互

GSLS 5058

Kaamel白皮书:IoT设备安全隐私评估实践

明确评估的目的和预期结果。

kaamelai的博客 1317

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败

先排除硬件上的问题,然后就烧录kernel 4.1的的镜像,多次测试也没有发现这个问题,所以排除了硬件上的问题,然后。查下usb hub和usb 4G的复位脚,写驱动都给它们配上了,但是还是存在这个问题。最后通过对比rk3399.dtsi发现少了个power-domains = ;多次开关机,发现usb hub和4G都通信失败了,这就有点奇怪了,按理说usb驱动是没啥问题的。加上后,重新编译烧录,重新测试没有发现这个问题了!先查看usb log。

qq_32017483的博客 2672

原生Android与uniapp开发的H5混合开发

vue版本选择2.0记住一点,打包H5前修改配置,否则在Android中打开会白屏,修改方式如下打包,打包后可以在浏览器打开确保有内容。

m0_49083276的博客 1937

INCA软件操作指南:手把手教你生成和解析DCM标定数据文件

本文详细介绍了INCA软件在汽车ECU开发中生成和解析DCM标定数据文件的全流程。从A2L文件导入到DCM文件生成,再到HEX文件导出,手把手教你掌握标定数据处理的实用技巧,包括参数标定、曲线标定和常见问题排查,帮助工程师提升工作效率。

weixin_29271053的博客 1052

Android WebView & H5 Hybrid 混和开发

移动互联网发展至今,Android开发模式在不断更迭, 目前主要有三种开发模式 :原生开发、Hybrid开发以及跨平台开发。移动终端的开发主要分为两大阵营, Android(Java、Kotlin) 研发与 IOS(Swift)研发。多种技术栈混合开发App, 在Android中主要指Native与前端(JavaScript)技术的混合开发方式。同一个技术栈, 同一套代码可以在不同的终端上运行,极大的缩减了研发成本, 比如当下比较火的Flutter。

nihaio25的博客 3210

实测对比:DINOv2、CLIP、ResNet在图像相似度任务上谁更强?(含Python代码与避坑指南)

本文通过实测对比DINOv2、CLIP和ResNet在图像相似度任务中的表现,提供Python代码实现与避坑指南。实验结果显示,DINOv2在精度上表现最佳,CLIP在多模态场景中优势明显,而ResNet则在计算效率上更优。文章还针对不同业务场景给出了具体选型建议,帮助开发者在图像搜索和版权检测等项目中做出更明智的技术决策。

weixin_30588381的博客 286

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4144

混合开发篇-原生与H5交互

## 混合开发 DCLOUD实现混合开发的方式,微信公众号的二次开发,微信小程序 ### 现有的NativeAPP、WebAPP、HybridAPP的区别 APP:application应用程序,一般指移动端的应用。 1. NativeAPP: 由Andriod、IOS开发人员开发;使用的语言是:xml+java;xml+(Objective-C/swift); 对网络的依赖性不强(在没有网络的情况下也能使用部分功能);流畅度较高;能调用设备的原生功能; 应用需要下载安装,使用成本高;更新维护

qq_40596488的博客 2万+

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1284

混合开发

一、原生语言: 苹果手机:ios系统,由swift和c++/object-c语言编写,后缀名为 ipa(ios开发的安装包的后缀名) swift语言是一种开源的语言 安卓手机:android系统,由java(android)语言编写,后缀名为apk 开源的 wp手机:windowphone系统,由c#语言编写, 一般说到混合开发不考虑这个版本 二、混合开发: 原生语言开发+js的开发 缘由: j...

别来...无恙*的博客 1796

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

AI人人懂 2749

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 81

H5和原生开发的区别

现观目前市场上的APP横行,不同行业、不同类目的APP在国内各大应用市场挤爆的满满了,那么作为一个程序员或者一个企业如何能从容的把握住制作一款实用又符合用户体验的APP呢? 自从接触APP也有四年多了,这里我想简单的介绍下这两者的区别和程序猿、企业应如何正确又快速的做出此款APP的制作时涉及的技术方面的决定。 以下我将以最通俗的说法分7点讲述: 一、概念 a) H5:即Html5,接触过互...

monica1_1的博客 6985

加密解密(支持高强度加密算法).zip

JDK8开始是是不能使用PBEWITHMD5ANDTRIPLEDES等高强度加密算法,通过修改配置(jce_policy-8.zip中的两个jar包拷贝到<JRE_HOME>\lib\security下面,替换掉两个原有的同名文件),启动对高强度加密算法支持

h5商城模板_B2B2C多用户商城系统,功能+渠道+架构+商业模式整合方案

电商企业花费高价去定制B2B2C多用户商城系统,既不受限于第三方平台的监管,自主运营电商品牌,又能实现多用户商城系统营销模式多样化。多商户商城系统通过商家入驻+平台运营、B2B2C招商加盟、产业链电商等模式轻松实现电子商务平台运营管理,一站式解决B2B2C多用户购物商城商品供应、线上线下渠道资源整合痛点。国内知名的电商系统搭建平台【数商云】打造B2B2C模式电子商务系统,支持平台自营与供货商店铺共...

weixin_39765588的博客 2037

《美国心理学会发表指南》APA手册第7版更新

2019年10月,美国心理协会Psychological Association(APA) 介绍了 APA第7版发表手册(Publication Manual), 将要取代2009年发布的第6版。而根据JAP (Journal of Applied Psychology) 官方消息,6月1日起,所有投稿都要采用新格式了。作者(author):American Psychological Association出版社(publisher):American Psychological Association大小(size):33 MB格式(extension):pdf,非扫描版,非常清晰

窄带波束形成,常规波束形成,matlab

实现了窄带波束形成,有传统的cbf算法,也有自适应波束形成算法

h5 android 键盘收缩内容不下来_APP将取代H5成为主流

APP将取代H5成为主流netkiller:APP将取代H5成为主流​zhuanlan.zhihu.com智能手机,平板电脑,穿戴设备,甚至部分笔记本电脑,都携带摄像头,麦克风,GPS定位,三轴电磁罗盘,3D面部传感器,指纹,NFC近场通信,红外线,蓝牙,加速度传感器等等。人们对移动设备的依赖程度越来越高,使用时间越来越长,产生的流量是PC的几十倍,甚至很多人不止一台移动设备。近年来互联网的发展从...

weixin_39558754的博客 134

notepad文本编辑工具

notepad文本编辑工具

B2B2C多用户商城系统,功能+渠道+架构+商业模式整合方案

电商企业花费高价去定制B2B2C多用户商城系统,既不受限于第三方平台的监管,自主运营电商品牌,又能实现多用户商城系统营销模式多样化。多商户商城系统通过商家入驻+平台运营、B2B2C招商加盟、产业链电商等模式轻松实现电子商务平台运营管理,一站式解决B2B2C多用户购物商城商品供应、线上线下渠道资源整合痛点。 打造B2B2C模式电子商务系统,支持平台自营与供货商店铺共存的模式(类似京东&天猫),全面支持PC端/微信/APP/H5/小程序等多终端,兼容B2C&B2B2C&O2O&

数商云博客 5164

h5获取安卓定位_APP将取代H5成为主流

APP将取代H5成为主流人们对移动设备的依赖程度越来越高,使用时间越来越长,产生的流量是PC的几十倍,甚至很多人不止一台移动设备。智能手机,平板电脑,穿戴设备,甚至部分笔记本电脑,都携带摄像头,麦克风,GPS定位,三轴电磁罗盘,3D面部传感器,指纹,NFC近场通信,红外线,蓝牙,加速度传感器等等。近年来互联网的发展从B/S模式慢慢重回C/S模式,即APP和服务器模式。早期互联网是C/S模...

weixin_39573598的博客 137

H5、原生app、混合开发三者比较

一、概念 a) H5:即Html5,接触过互联网的都知道html,所以很明显h5是html的第5次重大修改的一项超文本标记语言的标准协议。 b) 原生:使用原生制作APP(Native app),即在基于目前的智能手机的操作系统(如安卓android、苹果IOS,另外还有windows phone)的基础上并且搭配原生的编程编写运行的第三方的移动应用程序,简称原生APP。 二、用户使用角度 ...

weixin_33709364的博客 883

Android混合开发之------ AndroidStudio集成Cordova项目

 目录: 1.Cordova环境搭建 2.编译cordova项目 3.Cordova编译的项目引入到AndroidStudio中 4.页面嵌套 5.h5页面跳转到原生页面   android开发环境设置略过,直接进入正题。 1.Cordova环境搭建  a)安装nodejs(下载地址:https://nodejs.org/),一路next即可。 b)安装Cordova 命令:n...

iteye_10837的博客 1193

h5封装去底部_Appium—Native+H5混合APP的自动化

前言小编所在项目的客户端是比较奇怪的一个APP,大部分页面Android和iOS的客户端只提供了webview的功能,都是由H5处理业务逻辑和用户交互。H5承担了和服务端、和客户端的交互。虽然在开发实现上很方便,前端开发,三端上线。但是,如果要我们测试要做基于Appium做自动化来说这就不是一件好事儿了,因为Native的客户端可以借助ADB命令和封装的Appium实现大多数点击、跳转...

weixin_39554891的博客 379
上一篇: Kotlin
下一篇: Gson,FASTjson 解析字符串为数组,日期等方式
一朵红杏
博客等级 码龄12年 51粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值