2011-12-15 40 views
1

有时PhoneGap会在Android浏览器中打开网页,有时会在其UIWebView中打开它们。该行为因Android版本而异。例如,在ICS中,window.open()在Android浏览器中打开链接,但2.3仿真器在WebView中打开这样的链接。什么控制PhoneGap是否打开Android浏览器?

什么控制链接是在Android浏览器还是在WebView中打开?

+0

我发现在ICS上,WebViewClient的DropGap.java子类在URI没有列入白名单时激发一个“android.intent.action.VIEW”意图。其中启动了外部浏览器。 (还有一些内置的方案可以引发意图,比如`mailto:`,`geo:`,`sms:`,它会触发其他适当的事件) – nmr 2011-12-15 19:09:41

回答

1

我到目前为止已经发现:

的事情,火shouldOverrideUrlLoading方法将启动一个外部浏览器,如果:

  • 的网址是不是白名单
  • 一些方案(sms:tel:geo:mailto:

但是,在shouldOverrideUrlLoading方法并不总是被解雇 - 在Android 2.2和以前(也许2.3?)JavaScript技术触发页面加载(例如window.open()document.location.href =)不会触发该方法,因此无论如何加载WebView。

由用户物理点击的链接似乎总是触发该方法。使用JS事件机制来触发链接上的点击事件也可能奏效,我还没有尝试过。