我有一个正在从原生应用中的网页浏览中查看的网页,此网页有一个元素。文件输入在Web浏览器中正常工作,但在应用程序中不起作用(iPhone和Android上的问题都不同)。
该应用已经发布,我真的不想更新该应用的原生部分。
理想的解决方案是将java脚本添加到网页中,该脚本可以检测到它在应用程序内运行,然后使用URL启动浏览器(在应用程序之外)。
这有可能吗?
答案 0 :(得分:0)
如果您的应用覆盖了webview使用的默认用户代理,则可以。默认情况下,webview的用户代理与默认浏览器的用户代理相同。所以你没有办法区分那些。如果你的应用程序覆盖了useragent,那么你可以使用javascript&基于此采取行动。理想的解决方案是尽力解决你的html问题。
答案 1 :(得分:-1)
我的理解是,如果不更改应用程序,就无法启动应用程序之外的浏览器。
您可以在iOS中添加如下代码。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *address = request.URL.absoluteString;
if( address is needed to be launched on the webbrowser ) {
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
}
return YES;
}
建议在网页和应用之间定义协议。欢呼声。
答案 2 :(得分:-1)
启动浏览器应该没问题,如此处所示:
Can I launch an intent using only javascript in an Android browser?
然而,检测应用程序很难。如果您已经在应用程序中使用了javascript桥接器,那么您可以调用本机应用程序javascript桥接器,如果成功,那么您就知道自己正在使用#34;您的应用程序"并且可以通过上述意图回复。
如果不这样,用户代理检测(如其他地方所述)可能是您的最佳选择。
换句话说,您需要在Webview中进行可识别且独特的操作,以确信您实际上在其中。如果你做了一个简单的vanilla实现,那么你将被迫进行用户交互("如果你正在使用我们的应用程序,请点击这里" - 太糟糕!)或更新原生应用程序。