在我正在开发的Phonegap 1.3.0应用程序中,我遇到了一个似乎很小的问题。它适用于安卓设备。
问题源于我试图整合到我的应用程序中的广告。我正在尝试不使用 Leadbolt 的无 SDK 报价墙以及他们的横幅广告。
我在我的应用程序的 iframe 中加载优惠墙,在隐藏的 DIV 内,然后在需要时显示它 - 这部分工作得很好。
当我单击优惠墙上的一个链接时,问题就出现了:不是在新的外部/本机浏览器中启动单击的 URL,而是在 iframe 中打开链接。当有人点击横幅时也会发生同样的事情,尽管这些是通过在您希望广告展示的位置插入 a 而不是通过 iframe 来集成的。(也许脚本注入了一个iframe,不知道,最终的行为是一样的)
我现在要做的是在 Java 中实现一个方法来捕获任何点击,如果链接不是相对/本地的,则打开一个新浏览器 - 即,如果它以“http”、“https”或“市场”协议
真正的问题就在这里——我对 Java 的唯一经验是有点弄乱 Phoengap :(
我整天都在阅读和测试东西,但最后我必须求助于那些在 Java 编程方面比我知识渊博的人。
到目前为止,这是我一直在尝试的:
package com.phonegap.my_great_app;
import android.os.Bundle;
import android.webkit.WebView;
import com.phonegap.*;
public class MyGreatApp extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
/* Intercept clicked links, and open external URLs in external browser */
public boolean shouldOverrideUrlLoading(DroidGap super, String url) {
if (url != null && url.startsWith("market://") || url.startsWith("http://") || url.startsWith("https://")) {
/* Open new WebView or external browser with URL */
/* Do it here */
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} else {
/* Do nothing, it's relative URL from my app */
return false;
}
}
}
}
我确信这段代码是可笑的错误,但希望它可以说明我在这里想要实现的目标。说实话,我不知道 shouldOverrideUrlLoading() 是否是解决这个问题的正确方法!
我将非常感谢您提供的任何建议或代码示例!谢谢 :)
编辑:为了清楚起见 - 我无法更改 iframe 源代码,因此由于 XSS 问题,javascript 或更改链接目标不是一个选项。