2个apk交互:
A是浏览器apk,负责加载显示页面;
B是launcher apk,开机先加载A进行身份认证并加载相应的top页面,
最后完成跳转通过JS接口启动B进入launcher界面,
在B的launcher界面可以进入各子栏目,进入子栏目即启动A,浏览器显示相应页面。
在A中又可以一层层返回最后通过接口启动B返回到launcher界面。
本文要说的是在B的launcher界面,进入子栏目,启动A时会给A传递一个URL,
浏览器会去加载该URL,问题就在于该URL需要调用A开机时加载的top页面中的一些JS函数,
该URL页面中有一些top.xxx(); 其中xxx()函数就是top页面的JS函数。
所以我们需要保留页面框架,找到top页面,否则会导致JS报错,页面加载失败。
寻找并加载top页面即可实现保留页面框架,具体如下:
1、调用evaluateJavascript()来异步执行JavaScript代码
mWebView.evaluateJavascript(js,null);
其中js为查找top页面的一个js函数,js是String类型,如:String js = “function LoadEpgUrl(url){
alert("find the top frame url");
}”;
mWebView.evaluateJavascript(js,null);
2、在传递的URL页面寻找top页面:
alert("window.top.location.href:"+window.top.location.href);
a) 在top页面通过标签元素的ID进行查找:
var frame = window.top.document.getElementById("EPG");
b) 在top页面通过标签元素的Name进行查找:
var frame = window.top.document.getElementsByName("mainWin")[0];
若frame不为空,则表示找到的top页面为有效top页面;
否则将传递的参数URL作为top页面地址。
如此即实现了保留页面框架。