【问题标题】:What controls whether PhoneGap opens the Android browser?什么控制PhoneGap 是否打开Android 浏览器?
【发布时间】:2011-12-15 01:07:28
【问题描述】:

PhoneGap 有时会在 Android 浏览器中打开网页,有时会在其 UIWebView 中打开网页。行为因 Android 版本而异。例如,在 ICS 中 window.open() 在 Android 浏览器中打开链接,但 2.3 模拟器在 WebView 中打开此类链接。

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

【问题讨论】:

  • 我发现在 ICS 上,WebViewClient 的 DropGap.java 子类会触发 URI 的 android.intent.action.VIEW 意图,如果它未列入白名单。哪个启动外部浏览器。 (也有一些内置方案可以触发 Intent,例如 mailto:geo:sms:,它们会触发其他适当的事件)

标签: android cordova


【解决方案1】:

到目前为止我发现了什么:

触发shouldOverrideUrlLoading 方法的东西会在以下情况下启动外部浏览器:

  • 网址未列入白名单
  • 一些方案(sms:tel:geo:mailto:

但是,shouldOverrideUrlLoading 方法并不总是被触发 -- 在 Android 2.2 和更早版本(也许是 2.3?)上触发页面加载的 Javascript 技术(例如 window.open()document.location.href =)不会触发该方法,因此无论如何都加载到 WebView 中。

用户实际点击的链接似乎总是触发该方法。使用JS事件机制触发链接点击事件也可以,我没试过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多