PhoneGap:打开外部页面,然后返回应用程序



好吧,浏览我找到的问题,将外部页面加载到电话盖上视图(即不放弃会话或打开设备浏览器)中,如下所示:如何我将网页加载到电话盖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。

相关内容

  • 没有找到相关文章

最新更新