我正在处理的 Phonegap 1.3.0 应用程序中出现了一个非常小的问题。它适用于Android设备。
问题源于我尝试合并到我的应用中的广告。我正在尝试使用Leadbolt的无SDK优惠墙以及横幅广告。
我正在我的应用中的iframe中加载商品墙,在隐藏的DIV中,然后在需要时显示它 - 这部分工作得很好。
当我点击优惠墙上的其中一个链接时出现问题:不是在新的外部/本机浏览器中启动点击的网址,而是在iframe中打开链接。当有人点击横幅广告时会发生同样的事情,尽管通过在您希望广告展示的位置插入广告而不是通过iframe来整合广告。 (也许脚本会注入iframe,dunno,结束行为是一样的)
我现在要做的是在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或更改链接目标不是一种选择。
答案 0 :(得分:1)
您可以在默认浏览器中打开外部链接,而不是在phonegap应用程序内打开。这可以通过两种方式轻松完成。
一个是使用像这样的Phonegap方法,
navigator.app.loadUrl('http://stackoverflow.com');
/*NOTE : In some phonegap versions it does not works*/
另一种方法是使用jquery mobile,你可以这样做,
<a href="http://www.youtube.com/user/mychannel" class="ui-link" rel="external" target="_blank" title="My YouTube Channel">YouTube Channel</a>
多数人。