CN109766146A - 一种html脚本启动android app指定界面的方法 - Google Patents

一种html脚本启动android app指定界面的方法 Download PDF

Info

Publication number
CN109766146A
CN109766146A CN201910099521.XA CN201910099521A CN109766146A CN 109766146 A CN109766146 A CN 109766146A CN 201910099521 A CN201910099521 A CN 201910099521A CN 109766146 A CN109766146 A CN 109766146A
Authority
CN
China
Prior art keywords
interface
startup
class
management
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910099521.XA
Other languages
English (en)
Inventor
庄明彬
张建宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Linewell Software Co Ltd
Original Assignee
Linewell Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Linewell Software Co Ltd filed Critical Linewell Software Co Ltd
Priority to CN201910099521.XA priority Critical patent/CN109766146A/zh
Publication of CN109766146A publication Critical patent/CN109766146A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明涉及一种html脚本启动android app指定界面的方法,其利用android系统层会提供接口的形式来实现一些回调操作,通过反射去获取持有接口引用的对象,然后将所要启动的界面路径替换原有的对象,这样android系统调用接口的时候,调用替换过的对象,就能达到实现从html脚本启动android app指定界面的目的。本发明的方法可以减少html端打开app端界面时的重复定义协议标准的工作,从而提高工作效率。

Description

一种html脚本启动android app指定界面的方法
技术领域
本发明涉及互联网技术领域,具体涉及一种html脚本启动android app指定界面的方法。
背景技术
随着产品的不断迭代,应用的html5端与app端间良好的交互体验要求也越来越高,在使用过程中经常的会出现从html5端打开app端的登录界面或者注册界面。而android系统规定,界面要让其它html5端访问就必须要配置一套对外可以访问的协议标准。
传统的定义方式就出现了问题:html5端在新迭代的需求中需要打开app端的目标界面,但app端并没有提供这个功能,这个时候就需要对app端进行同步修改,重新打包发布到市场。但这样会影响了新版本的发布进度,而且有时功能需要,还强制用户更新,也影响了用户体验。同时当html5端调用的界面越多,app端就要有更多的界面需要进行配置,虽然此技术不难,但相当繁琐,影响了开发的效率。
有鉴于此,本发明人针对html5端与android app端之间交互存在的问题与缺陷,而深入构思且积极研发,进而产生本发明。
发明内容
本发明的目的在于提供一种html脚本启动android app指定界面的方法,其可以减少html端打开app端界面时的重复定义协议标准的工作,从而提高工作效率。
为实现上述目的,本发明采用的技术方案是:
一种html脚本启动android app指定界面的方法,其包括以下步骤:
步骤1、在androidManifest.xml清单文件中注册一个对外可被调用的Activity界面统一入口,并定义相应的调用协议标准;
步骤2、html5界面根据android规范调用定义的协议,传入将要调用的界面路径来启动这个Activity界面;
步骤3、利用动态代理的方式,代理系统出界面管理类的本地binder对象,并拦截界面管理接口的启动方法;
步骤4、在拦截的界面管理接口的启动方法时,判断启动方法中是否包含启动界面,当启动方法中包含启动界面时,将目标界面的Intent替换成已注册的Activity界面的Intent;
步骤5、拦截界面线程类的成员变量mH的线程对象消息传递方法的第一个启动界面对象;并对界面线程类中的线程对象进行动态代理,替换真正要启动的Intent。
所述步骤1中,调用协议标准为:scheme://userInfo@host:port/path?query#fragment,其中,scheme是协议名称,userInfo@是用户信息,,host为包名,port为端口号,path是路径,query#fragment为需要传递的参数。
所述步骤3具体如下:
通过java的动态代理,来将系统界面管理类的所有方法拦截下来,然后其修改参数,通过不断的反射,最终获取到本地界面管理类的成员变量的默认变量,该默认变量即为本地binder对象;
获取到本地binder对象之后,通过动态代理构造一个代理对象,将界面管理类接口的所有启动方法都实现出来,那么,系统调用所有界面管理接口的启动方法时,就拦截到所有界面管理接口的启动方法。
采用上述方案后,本发明利用android系统层会提供接口的形式来实现一些回调操作,通过反射去获取持有接口引用的对象,然后将所要启动的界面路径替换原有的对象,这样android系统调用接口的时候,调用替换过的对象,就能达到实现从html脚本启动android app指定界面的目的。本发明的方法可以减少html端打开app端界面时的重复定义协议标准的工作,从而提高工作效率。
附图说明
图1为本发明的工作流程示意图。
具体实施方式
如图1所示,本发明揭示了一种html脚本启动android app指定界面的方法,具体包括以下步骤:
步骤1、在androidManifest.xml清单文件中注册一个对外可被调用的Activity界面统一入口,并定义相应的调用协议标准。该调用协议标准为:scheme://userInfo@host:port/path?query#fragment,其中,scheme是协议名称,userInfo@是用户信息,可以省略,host可以定义为包名,port为端口号,path是路径,query#fragment即为需要传递的参数。
步骤2、html5界面根据android规范调用定义的协议,传入将要调用的界面路径来启动这个Activity界面。
步骤3、利用动态代理的方式,代理系统出界面管理类(android.app.IActivityManager)的本地binder对象,并拦截界面管理接口的启动方法(startActivity)。
具体地,通过java的动态代理,来将系统界面管理类(android.app.IActivityManager)的所有方法拦截下来,然后去修改参数,通过不断的反射,最终获取到本地界面管理类(ActivityManagerNative)的成员变量的默认变量(gDefault),该默认变量(gDefault)实际上是一个ActivityManagerProxy界面管理代理对象即本地binder对象,最终的binder跨进程通信在应用上都是通过它当中调用去完成的。
获取到本地binder对象之后,我们就通过动态代理构造一个代理对象,将界面管理类接口(IActivityManager)的所有启动方法(startActivity)都实现出来,那么,系统调用所有界面管理接口(IActivityManager)的启动方法(startActivity)时,都可以拦截到。
步骤4、将目标界面(Activity)的Intent替换成已注册的Activity的Intent,并将目标界面Activity的Intent带过去。
在拦截的界面管理接口的启动方法时,判断启动方法中是否包含启动界面,当启动方法中包含启动界面时,把构造的一个Intent意图放进去,这个Intent意图也带了要启动的目标界面Activity,它的ComponentName组件名称就是在Manifest清单文件中中注册的activity界面。
步骤5、拦截界面线程类(ActivityThread)的成员变量mH的线程对象消息传递方法(handleMessage)的第一个启动界面对象(case LAUNCH_ACTIVITY);并对界面线程类(ActivityThread)中的线程对象(handle)进行动态代理,替换真正要启动的Intent。
以上所述,仅是本发明实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (3)

1.一种html脚本启动androidapp指定界面的方法,其特征在于:所述方法包括以下步骤:
步骤1、在androidManifest.xml清单文件中注册一个对外可被调用的Activity界面统一入口,并定义相应的调用协议标准;
步骤2、html5界面根据android规范调用定义的协议,传入将要调用的界面路径来启动这个Activity界面;
步骤3、利用动态代理的方式,代理系统出界面管理类的本地binder对象,并拦截界面管理接口的启动方法;
步骤4、在拦截的界面管理接口的启动方法时,判断启动方法中是否包含启动界面,当启动方法中包含启动界面时,将目标界面的Intent替换成已注册的Activity界面的Intent;
步骤5、拦截界面线程类的成员变量mH的线程对象消息传递方法的第一个启动界面对象;并对界面线程类中的线程对象进行动态代理,替换真正要启动的Intent。
2.根据权利要求1所述的一种html脚本启动androidapp指定界面的方法,其特征在于:所述步骤1中,调用协议标准为:scheme://userInfo@host:port/path?query#fragment,其中,scheme是协议名称,userInfo@是用户信息,host为包名,port为端口号,path是路径,query#fragment为需要传递的参数。
3.根据权利要求1所述的一种html脚本启动androidapp指定界面的方法,其特征在于:所述步骤3具体如下:
通过java的动态代理,来将系统界面管理类的所有方法拦截下来,然后其修改参数,通过不断的反射,最终获取到本地界面管理类的成员变量的默认变量,该默认变量即为本地binder对象;
获取到本地binder对象之后,通过动态代理构造一个代理对象,将界面管理类接口的所有启动方法都实现出来,那么,系统调用所有界面管理接口的启动方法时,就拦截到所有界面管理接口的启动方法。
CN201910099521.XA 2019-01-31 2019-01-31 一种html脚本启动android app指定界面的方法 Pending CN109766146A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910099521.XA CN109766146A (zh) 2019-01-31 2019-01-31 一种html脚本启动android app指定界面的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910099521.XA CN109766146A (zh) 2019-01-31 2019-01-31 一种html脚本启动android app指定界面的方法

Publications (1)

Publication Number Publication Date
CN109766146A true CN109766146A (zh) 2019-05-17

Family

ID=66454680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910099521.XA Pending CN109766146A (zh) 2019-01-31 2019-01-31 一种html脚本启动android app指定界面的方法

Country Status (1)

Country Link
CN (1) CN109766146A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580154A (zh) * 2019-05-24 2019-12-17 中国银联股份有限公司 基于h5接入方式的接入方法及其接入组件和移动终端
CN110888773A (zh) * 2019-10-28 2020-03-17 北京字节跳动网络技术有限公司 一种获取线程标识的方法、装置、介质和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049320A (zh) * 2012-12-17 2013-04-17 广州市动景计算机科技有限公司 在浏览器中启动外部应用程序的方法和装置
WO2016176206A1 (en) * 2015-04-26 2016-11-03 Intel Corporation Integrated android and windows device
CN107967169A (zh) * 2017-11-22 2018-04-27 北京搜狐新媒体信息技术有限公司 页面跳转监听方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049320A (zh) * 2012-12-17 2013-04-17 广州市动景计算机科技有限公司 在浏览器中启动外部应用程序的方法和装置
WO2016176206A1 (en) * 2015-04-26 2016-11-03 Intel Corporation Integrated android and windows device
CN107967169A (zh) * 2017-11-22 2018-04-27 北京搜狐新媒体信息技术有限公司 页面跳转监听方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
剑影挺好: "Android Scheme的跳转协议,跳转到app的指定页面", 《HTTPS://BLOG.CSDN.NET/QQ_37515717/ARTICLE/DETAILS/84847144》 *
红-旺永福: "Android Hook技术实践", 《HTTPS://BLOG.CSDN.NET/SINAT_22657459/ARTICLE/DETAILS/53896124》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580154A (zh) * 2019-05-24 2019-12-17 中国银联股份有限公司 基于h5接入方式的接入方法及其接入组件和移动终端
CN110888773A (zh) * 2019-10-28 2020-03-17 北京字节跳动网络技术有限公司 一种获取线程标识的方法、装置、介质和电子设备
CN110888773B (zh) * 2019-10-28 2023-06-06 北京字节跳动网络技术有限公司 一种获取线程标识的方法、装置、介质和电子设备

Similar Documents

Publication Publication Date Title
US8990920B2 (en) Creating a virtual private network (VPN) for a single app on an internet-enabled device or system
EP2704358B1 (en) Method and device for managing mobile broadband device
CN102857566A (zh) 一种可软件定制的物联网智能网关
CN104683313B (zh) 多媒体业务处理装置、方法及系统
CN109766146A (zh) 一种html脚本启动android app指定界面的方法
CN110224896B (zh) 一种网络性能数据采集方法、装置及存储介质
CN108055688A (zh) 一种用于智能显示设备的配网方法及装置、终端设备
US9141442B1 (en) Automated connector creation for provisioning systems
Mottola et al. Middleware for wireless sensor networks: an outlook
CN103164207A (zh) 基于安卓系统的跨硬件平台的应用程序开发方法和系统
WO2021244644A1 (zh) 动态整合应用程序的方法及其软件系统与机器
US9483287B2 (en) Communication infrastructure for virtual machines
CN103607454B (zh) Android系统浏览器设置私有代理服务器的方法
CA2384066C (en) Remote assembly of messages for distributed applications
CN115039385A (zh) 可配置的物联网通信系统
CN109343983A (zh) 功能模块间的信息交互方法、装置、设备及存储介质
CN106302856B (zh) 一种缩短Android智能POS交易时间的方法及系统
CN113556359A (zh) 一种通讯协议转换方法、设备、系统及网关设备
US11354491B1 (en) Systems and methods for improved data modeling and translation
JPWO2004075048A1 (ja) ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、サーバ、通信システム、および移動体通信端末装置
CN106648805A (zh) 一种智能装置、智能系统及智能安装应用的方法
WO2010130131A1 (zh) 一种实现设备管理任务并行工作的系统和方法
CN104363212A (zh) 一种基于Lua的socket通信语义解析方法、适配器和应用系统
CN107547217A (zh) 路由器业务配置方法及路由器
CN111901325B (zh) 蜜罐节点的服务扩展方法、装置、电子装置和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190517