Android与H5交互

入门系列之安卓WebView与H5的交互 使用H5的利弊我相信大家都很了解了,这里是入门级的文章我还是说给新同学听一下: 优点:1.宽平台,android和IOS加载同一个H5文件效果是一样的;2.适合动态业务,不如说像商城类的APP可能常常要做促销活动,不同的活动需要不同的主题,用原生的组件是不好实现的,这时候H5的优势就体现出来了,只需要在后台修改H5文件就可以了。题外话:用原生的能不能实现?答案是能,阿里巴巴团队已经开源了自家的解... 阅读详情

随着混合应用开发越来越多,需求场景的不断变化,碰到一个问题,最底层H5页面点击图片预览,是直接DIV图层的显示,而不是页面的跳转,所以点击返回按钮的时候,不能直接返回,要先调用js关掉图层,所以需要交给js进行处理。

常用的Java调用js,直接用loadUrl,但是没有返回值,不能进行回调,sdk19以上采用evaluateJavascript方法,在回调方法里又返回值,效率优于loadUrl,所以最后采用evaluateJavascript方法进行处理。

补充:转自:https://blog.youkuaiyun.com/bin622/article/details/71171256

1、webview的配置

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JSBridge(this, webView), "JSBridge");

2、类JSBridge示例

class JSBridge{
    private Context mContext;
    private WebView mWebView;


JSBridge(Context context, WebView webView) {
        mContext = context;
        mWebView = webView;

    }

     /**
     * 从app获取数据
     * @param dataType 获取的数据类型
     * @param extra    传给app的额外数据
     * @return
     */
    @JavascriptInterface
    public String getData(String dataType, String extra)   {

    }
}

 

3、js调用java的代码(只能调用那些被@JavascriptInterface注解的方法)

window.jsInterfaceName.methodName(parameterValues)此例中我们使用的是JSBridge作为注入接口名称。
例如:window.JSBridge.getData()

4、java调用js的方法:(更多调用方法参考http://www.imooc.com/article/1475)

String callbackUrl = "javascript:" + functionName + "()";
mWebView.post(new Runnable() {
       @Override
       public void run() {
       mWebView.loadUrl(callbackUrl);
                    }
           });
android原生和H5交互 最近在左一个Android原生的H5混合开发的APP,之前还没有好好的总结一下 Android原生 和 H5 之间交互的方法,这里来总结一下: 1、hybrid通信,主要就是前端的js和我们Android端的通信     这是最基本JS和Java 的通信方式:        这里我们分四块来讲:         (1)、js调用android原生的代码(不传递参数) 阅读详情

相关推荐

Android与H5的交互

上述代码中,我们通过findViewById方法获取到了WebView组件的实例,并启用了JavaScript支持,这样才能实现与H5的交互。运行Android应用,在WebView中加载H5页面,点击按钮即可调用Android中的方法,并在Android应用中显示Toast消息。上述代码中,我们创建了一个名为JavaScriptInterface的Java类,并将其实例注册到了WebView中,并指定了一个名称"android"。上述代码中,定义了一个showToast函数,在该函数中调用了。

. 876

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

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

UrasakiNakajima的博客 1万+

工业自动化实战:用LabVIEW的DSC模块实现MODBUS-TCP设备控制

本文详细介绍了如何利用LabVIEW的DSC模块实现工业自动化中的MODBUS-TCP设备控制。通过环境准备、核心功能解析、状态机实现及典型工业场景实战,帮助工程师快速掌握稳定可靠的通讯技术,提升工业自动化系统的运行效率。

salt9的博客 1057

关于原生android与H5交互的方法

android与H5交互方法

qq_44027159的博客 7773

Android Studio连接手机详细教程(包含遇到的问题集)

如果以上内容全都调试正确了,还是存在这个无法安装的问题,多半是一开始用的别的手机进行调试安装,然后抽掉线重新换上另一个手机安装调试才会报错。无法识别的 USB 设备,跟这台计算机连接的前一个 USB 设备工作不正常,Windows 无法识别它。此时,我的开发者选项已经开启,并且windows系统和android studio已经能够识别我的设备了,但还是报了这样的错误。右击你的手机——>更新驱动程序——>浏览我的计算机以查找驱动程序软件。右击此电脑——>属性——>设备管理器——>便携设备。

IT小郭的技术博客 4万+

开源数显表

开源数显表,广泛应用于车床、铣床、磨床、镗床、火花机、线切割等。市面上此类液晶数显表多数都是基于此项目。 一、基本配置 硬件 主控:STM32F407VGT6 LCD:群创AT070TN92 显示驱动:RA8875 光栅尺:3 x 输入(X/Y/Z) 串口:1 x MAX3232 继电器:2 x 输出 存储:AT24C64 模拟输入:LM324C 电源:AC 220V 软件 工程版本:Keil 5 STM32库:V1.4.0 图形界面:uCGUI 多语言支持:中文、英文 二、项目文

m0_70934529的博客 435

Android与H5交互 -- 点击H5跳转到 Android原生 页面 ,webview与h5(js)交互

app开发过程中,利用原生+h5模式来开发是比较常见的下面案例演示的是:原生调起一个H5页面,然后H5点击跳转到原生。

afufufufu的博客 1万+

标准化降水指数介绍

Mckee et al.(1993)认为降水量的减少是导致干旱的主要因素,其他气候因子一般变化较小,对干旱产生的影响不大,因此SPI使用降水量作为唯一参数。SPI能较好表达因降水量的大小反映干旱状况,操作简单,所需资料仅为降水量,同时该干旱指数在各个地区和各个时段都具有良好的计算稳定性,是继PDSI之后另一种被广泛应用的干旱指数。𝐻(𝑥)是Γ分布求得的概率,并当𝐻(𝑥)>0.5时,S=1;式中,𝛼是形状参数,𝛽是尺度参数,𝑥是当月降水量,𝛤(𝛼)是Gamma函数,用极大似然估计法计算最佳的𝛼和𝛽,即。

weixin_44259522的博客 2857

android与H5交互方法简介(2)

1.前言app开发过程中,利用原生+h5模式来开发是比较常见的,刚学习一段时间的安卓技术,感觉对我来说使用h5来实现ui界面是于安卓原生相比还是更为快速一下,也能够在网上找到许多模板样式。目前android和H5的基本知识都大概了解了,但android和H5之间的交互比较陌生,所以查阅了一下资料,对android与H5交互方法进行一个简单的记录和演示,为后续应用开发做准备。2.交互方式总结使用WebView的loadUrl()方法,以loadUrl(script)的方式调用。

2401_84545339的博客 1134

FSMC驱动LCD显示屏学习2

液晶显示器,简称 LCD(Liquid Crystal Display)相对于上一代 CRT 显示器 (阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分 子排列却和固体晶体一样非常规则,因此取名液晶。

usjjjsj的博客 1696

麒麟操作系统安装教程(保姆级)

本文介绍了如何在VM中安装麒麟操作系统,文章详细的介绍了麒麟操作系统按钻过步骤。

啊渊的专栏 1万+

Android H5和安卓的交互

Android H5和安卓的交互 H5调用安卓的方法 Webview设置 addJavascriptInterface(JStoAndroidMain(), "name") //name为H5端调用标识 inner class JStoAndroidMain { @JavascriptInterface //得加这个注解,webview才能调用安卓的方法 fun setTopSetting() { //H5调用的方法名 } } 安卓调用js方法

qq_40655872的博客 237

计算机毕设项目一:基于卷积神经网络、resnet、VGG化妆品分类识别 完整代码数据可直接运行

计算机毕设项目一:基于卷积神经网络、resnet、VGG化妆品分类识别 完整代码数据可直接运行

654

android 和h5交互,Android中与H5的交互

Android日常开发中,常常会遇到加载H5页面的情况,于是少不了与H5页面的交互问题。具体表现在Android调用H5代码及H5中调用Android代码两种情况。测试页面test.png这里我们首先编写上图所示的测试页面,在MainActivity中初始化各组件private void initView() {mLoginLayout = findViewById(R.id.login_layo...

weixin_33419305的博客 4039

十年芯片资深IC设计工程师面经系列(四)SDC约束

set_driving_cell:当我们的设计是模块级(Block level)的design时,我们的设计前面一般还有其他的设计,那么前面模块的输出便是我们模块的输入,5.1set_false_path:可以单独的时钟或者路径进行约束。set drive :当我们的设计是芯片级(Chip level)的顶层设计时,芯片外围电路要驱动的是负载较大的IO单元,故需要的驱动能力较强,:set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。

weixin_47349046的博客 1773

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android安卓JavascriptInterface与H5交互的基本使用以及报错解决办法。

在安卓开发的时候添加了webvie但是需要与js进行交互,让安卓里某个方法能够被调用。 addJavaScriptInterface 这个方法可以让我们在加载webview的时候注入一些方法进去,使得js能够调用。 废话不多说,直接上个demo可以自行体验,android studio环境直接打开: 跳转下载 详细解说: 首先确保webview允许了与js交互的设置 ,如果没设置可以添加下列方法: webView.getSettings().setJavaScriptEnabled(true);

ruiruiddd的博客 3779

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

安卓Android与H5双向交互MathJax展示数学公式(源码+解析)

安卓Android与H5(JS)交互(双向) 博主就今天周五又做了个需求(安卓Android与H5交互),原来上线的功能是服务器配置过来的学习报告(一个H5页面)并提供原始的微信分享功能,今天增加的是反向需求,由APP提供给服务器配置过来的H5页面的子级页面调用原生的微信分享,理了一下逻辑(写好给JS调用的方法),然后就是配合前端H5妹子,开启一下午的混合开发测试。(过程省略十万字,读者自...

KX興博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android与H5交互方法简介

android与H5交互方法简介1.前言2.交互方式总结3.分析与演示3.1演示项目准备3.2.Java调用JS代码3.2.1 loadUrl()方式3.2.2 evaluateJavascript()方式3.3.JS调用Java代码3.3.1addJavascriptInterface()方式3.3.2拦截请求方式3.3.2拦截对话框方式 1.前言 app开发过程中,利用原生+h5模式来开发是比较常见的,刚学习一段时间的安卓技术,感觉对我来说使用h5来实现ui界面是于安卓原生相比还是更为快速一下,也能够在

warmandfull的博客 6339

Android 与 H5 交互基础普及

在当今的移动开发中,移动端与网页的交互越来越频繁重要。为了达到灵活且减少移动端的开发工作量,通常一些运营活动页面或不太重要的深层级页面都是需要网页来实现的。使用网页还有一个重要的原因,就是网页可以轻松的适配Android和iOS平台,不必做太多的处理,这就要求移动端开发工程师 必须掌握 与H5交互的技能。 创建一个WebView页面 布局layout:hybrid_xml: <?xml ve...

wangjiang 4148

H5和安卓交互时,H5渲染滞后的坑

一、H5页面和安卓如何交互的 1.为什么会有h5和安卓的交互? 在手机app中,有时候需要在app中嵌入h5网页,能增加app的跨平台性,也就是相同的h5也可以嵌在ios平台。减少跨平台的开发成本。 同时,也能增强响应速度,减少内存消耗等优点。 2.如何交互? 主要在app中镶嵌webview的方式。webview可以看做一个内置浏览器,在webview中通过链接进入页面。 h5调移动端:在app中定义一个全局方法A,h5去调用。 移动端调h5:相同的,在h5 中定义一个全局方法B,然后app中调用。

996程序员的自我修养 1103

h5与安卓、ios交互

1.安卓交互 h5调用安卓方法 window.webview.xxx() 安卓调用h5方法, 方法需要在全局注册 window['showUnreadMsg'] = () => { this.$nextTick(() => { this.showUnreadMsg(); }) }    2...

a15651769695的博客 181

Android通过webview与H5交互(互调)

前话 笔者是写H5小页面的,所以这篇文章主要是针对前端与安卓交互时遇到的一些问题做简单总结和合理猜测,针对安卓的话,有一个图是总结所有交互的方式的,可以看一下,当个参考,当时总结的时候是参考一篇写得比较详细的文章做得,但是现在找不到了,如果作者看到可以与我联系,我定更改附上链接,谢谢。 安卓通过webview与JS进行交互 安卓调用JS注意点 ● 提供给安卓使用的js方法,需要提高到window...

Antoinette_Xiao的博客 643

android与h5交互原理,【Android开发进阶系列,整理】Android与h5交互专题

1 交互原理1.1 webview如何加载H5页面我们都知道在Android中是通过webView来加载html页面的,根据HTML文件所在的位置不同写法也不同:*//加载assets文件夹下的test.html页面,文件截图如图1*mWebView.loadUrl("file:///android_asset/test.html");*//加载网页*mWebView.loadUrl("http:...

weixin_39768645的博客 317
上一篇: Android MediaStore仿微信朋友圈获取图片及视频
下一篇: Android 自定义视频播放器
leverge2009
博客等级 码龄14年 34粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值