js 和Android 混合开发原理

文章目录

    • 建立项目
      • 主要编译的目录结构 :src 文件
        • 混合App开发原理
          • 1、在MainActive文件中
          • 2、在AndroidManifest文件中(Android的一些配置信息)
        • js调用Android中的功能
        • Android调用js中的功能
    • 总结:

建立项目

步骤 :file -> new project : Application name //应用是面程 就是安装在手机上的应用名称

Company domain   公司标识
Company domain + Application name 就是应用的包名

在这里插入图片描述

Active Name Android的控制代码 同等于vue的入口文件  
Layout 布局文件 相当于HTML代码

在这里插入图片描述

主要编译的目录结构 :src 文件

在这里插入图片描述

Java目录下的MainActive文件  定义变量用于保存获取到的dom对象,然后对dom对象进行操作,相当于 h5 中的 Javascript文件,对dom进行逻辑操作(如点击事件)Java目录下的MWebChromeClient文件 MWebViewClient
是webview 内部跳转需要用到的文件 直接复制res 下的layout 文件相当于HTML文件 是对静页面的布局assets下 写HTML文件

混合App开发原理

利用 Android 原生代码搭建一个Android应用的壳子,里面实际放的是js代码写的网页

首先 我们需要用到Android中的 WebView 组件

1、在MainActive文件中

需要给页面添加一个网页

wv.loadUrl("file:///android_asset/index.html"); ///加载本地的页面 ‐‐‐‐‐ 代码在手 
机,更新需要下载替换 
wv.loadUrl("https://h5.m.taobao.com/#index"); /// 加载远程的页面 ‐‐‐‐‐ 更新无需下载或者添加本地资源wv.loadUrl("file:///android_asset/index.html");

默认的webviw浏览器是纯洁的,不支持js,需添加

 // google - 设置 -高级 - 网站设置 - javascriptwv.getSettings().setJavaScriptEnabled(true);

默认情况下,点击webview中的链接,会使用Android系统自带的浏览器打开这个链接。 将网页内的js各项跳转 在本webview内跳转 需要以下代码

MWebViewClient mWebViewClient = new MWebViewClient(wv, getApplicationContext());
wv.setWebViewClient(mWebViewClient);
MWebChromeClient mWebChromeClient = new MWebChromeClient(getApplicationContext());
wv.setWebChromeClient(mWebChromeClient);
2、在AndroidManifest文件中(Android的一些配置信息)

**如果需要网络,需要添加权限 **

<uses‐permission android:name="android.permission.INTERNET" />
新建两个对象MWebViewClient 和 MWebChromeClient,他们分别继承自WebViewClient和 WebChromeClient 主要提供网页加载过程中提供的数据内容
MWebViewClient 和 MWebChromeClient中的方法其相当于vue中的生命周期

js调用Android中的功能

如果你要调用系统中的方法,如 调用拍照功能 
android工程师会为你提供一个对象和他对应的方法(在MainActive定义)使用wv.addJavascriptInterface(new MJavascriptInterface1(getApplicationContext()), "androidObj");给浏览器提供接口-> 对象(androidObj ) 提供了 方法 (takePhoto)在assets中的index文件中调用 :调用方法window.对象.方法()

Android调用js中的功能

在assets中是index(自己建的HTML文件)文件下定义方法,js函数
在MainActive中调用 wv.loadUrl("javascript: js中的方法名(实参...)");

总结:

1混合开发核心思想 ---- 将网页内嵌到android或者ios应用中
2 网页的加载离不开 浏览器,如果 原生 能够提供一个浏览器 ,就可以
3原生都会有一个组件 webview ,它就是一个浏览器,只不过是纯洁的浏览器,需要配置
4 Android可以调用由js设定的函数,可以传参也可以不传参
5 js可以调用由Android设定的函数,


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部