CN109766146A - 一种html脚本启动android app指定界面的方法 - Google Patents
一种html脚本启动android app指定界面的方法 Download PDFInfo
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种html脚本启动android app指定界面的方法,其利用android系统层会提供接口的形式来实现一些回调操作,通过反射去获取持有接口引用的对象,然后将所要启动的界面路径替换原有的对象,这样android系统调用接口的时候,调用替换过的对象,就能达到实现从html脚本启动android app指定界面的目的。本发明的方法可以减少html端打开app端界面时的重复定义协议标准的工作,从而提高工作效率。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种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对象之后,通过动态代理构造一个代理对象,将界面管理类接口的所有启动方法都实现出来,那么,系统调用所有界面管理接口的启动方法时,就拦截到所有界面管理接口的启动方法。
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)
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)
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 | 北京搜狐新媒体信息技术有限公司 | 页面跳转监听方法及装置 |
-
2019
- 2019-01-31 CN CN201910099521.XA patent/CN109766146A/zh active Pending
Patent Citations (3)
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)
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)
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 |