好吧,浏览我找到的问题,将外部页面加载到电话盖上视图(即不放弃会话或打开设备浏览器)中,如下所示:如何我将网页加载到电话盖WebView中?在这里:iPhone的电话盖:问题加载外部URL
下一步是:我打开了一个extarnal页面(它是由我拥有的,我可以修改它)如何返回本地应用程序?假设我在外部页面中有一个链接,我希望将用户重定向回电话盖普应用程序中的本地HTML页面(mypage.html)。
链接的HREF属性应具有什么URL?我已经尝试将其设置为" file:///android_asset/www/mypage.html",但不起作用
您想使用ChildBrowser插件打开外部网页。然后,您要将ChildBrowser.onlocationChange属性设置为您自己的功能。然后,当该人远离远程页面时,您将收到位置更改的通知,因此您可以关闭Childbrowser并导航到新的本地页面。您甚至不需要触摸远程HTML页面。
因此,当用户远离远程页面时,要关闭浏览器:
cb.onLocationChange = function(loc){
console.log("location = " + loc);
if (loc != "http://example.com") {
cb.close();
}
};
您需要的是您的MainviewController中的这个魅力。
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
// Intercept the external http requests and forward to Safari.app
// Otherwise forward to the PhoneGap WebView
if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else {
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
}
这是使用PhoneGap/Cordova 2.7。在您的外部应用中,添加指向" app://index"的链接。
内部添加:
this.appView.setWebViewClient(new CordovaWebViewClient(this, this.appView) {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.equalsIgnoreCase("app://index")) {
Log.d("DEBUG", url);
loadUrl(Config.getStartUrl());
return true;
} else {
return super.shouldOverrideUrlLoading(view, url);
}
}
});
这将拦截呼叫并将用户重定向到配置的启动URL。