3

Web ビューで自分の Web ページの一部を表示する Android アプリを作成しました。問題は、ウェブページにいくつかのアドセンス広告があり、それらをアプリに表示することが許可されていないことです. 問題は、アプリでノーショーにする方法はありますか?

コード :

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://androidomedia.com/angry-birds-space-walkthrough/");
    mWebView.setWebViewClient(new HelloWebViewClient());

}

   private class HelloWebViewClient extends WebViewClient {
       @Override
       public boolean shouldOverrideUrlLoading(WebView webview, String url)
       {
           webview.loadUrl(url);
           return true;
       }
       }
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event)
   {
       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
       {
           mWebView.goBack();
           return true;            
       }
       return super.onKeyDown(keyCode, event);

   }

}`

4

2 に答える 2

1

コンテンツが動的に生成されると仮定すると、サーバー側でこれを処理できます。リクエストが Android アプリからのものである場合は、ウェブ サーバーに広告ユニットを表示しないようにします。Explicity は Android 側でユーザー エージェントを設定し、テンプレートを作成するときに確認します。

于 2012-05-28T20:36:47.420 に答える
0

最初に、ユーザー エージェント文字列を次のように簡単に検出できるものに設定する必要があります。

mWebView.getSettings().setUserAgentString("AndroidWebView");

次に、Web サイトをホストするサーバーで、Google から提供されたスクリプトを動的に生成する必要があります。ASP.NET を使用して Web サイトをホストしている場合は、次のようなことができます。

protected void Page_Load(object sender, EventArgs e)
{

                //Ensure that the Adsense ad isn't loaded if the calling user is using a WebView
                if (Request.UserAgent.Contains("AndroidWebView"))
                {
                    return;
                }

                //Create the Google Adsense ad dynamically
                var sb = new StringBuilder();
                sb.AppendLine("google_ad_client = \"ca-pub-123456789\";");
                sb.AppendLine("/* Ad Name Here */");
                sb.AppendLine("google_ad_slot = \"123456785\";");
                sb.AppendLine("google_ad_width = 728;");
                sb.AppendLine("google_ad_height = 90;");
                sb.Append("//-->");

                var scriptTag = new HtmlGenericControl("script");
                scriptTag.Attributes.Add("type", "text/javascript");
                scriptTag.InnerHtml = sb.ToString();

                var scriptTag2 = new HtmlGenericControl("script");
                scriptTag2.Attributes.Add("type", "text/javascript");
                scriptTag2.Attributes.Add("src", "http://pagead2.googlesyndication.com/pagead/show_ads.js");

                phBigAd.Controls.Add(scriptTag);
                phBigAd.Controls.Add(scriptTag2);

    }

その後、phBigAd という名前の ASPX マークアップ ページに PlaceHolder を追加して、サイト上で広告を配置したい場所に配置します。

<asp:PlaceHolder ID="phBigAd" runat="server" />

もちろん、StringBuilder に追加するときに Adsense コードを独自のものに置き換える必要がありますが、上記は一般的な形式です。

于 2012-10-18T02:49:01.107 に答える