私が取り組んでいるPhonegap 1.3.0アプリケーションで、かなり小さな問題と思われる問題が発生しています。Android端末向けです。
この問題は、アプリに取り込もうとしている広告に起因しています。Leadbolt の no-SDK オファー ウォールとバナー広告を使用しようとしています。
アプリのiframe内、非表示のDIV内にオファーウォールをロードし、必要に応じて表示しています-この部分はうまく機能しています。
問題は、オファー ウォールのリンクの 1 つをクリックしたときに発生します。クリックした URL を新しい外部/ネイティブ ブラウザーで起動する代わりに、リンクが iframe 内で開かれています。誰かがバナーをクリックしたときにも同じことが起こりますが、これらは 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またはリンクターゲットの変更はオプションではありません。