如何让webview Android应用不显示adsense广告?

时间:2012-05-13 19:36:24

标签: android webview adsense

我已经制作了一个Android应用程序,在webview中显示我的网页的一部分。问题是该网页有一些adsense广告,不允许在应用中显示它们。 所以问题是:是否有某种方法可以让它们在应用程序中显示?

代码:

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);

   }

}`

2 个答案:

答案 0 :(得分:1)

假设内容是动态生成的,您可以在服务器端处理此问题。如果请求来自您的Android应用,请让网络服务器不显示广告单元。 Explicity在android端设置用户代理,并在构建模板时检查它。

答案 1 :(得分:0)

首先,您需要将用户代理字符串设置为您可以轻松检测的内容,如下所示:

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

其次,在托管您网站的服务器上,您需要动态生成Google为您提供的脚本。如果您使用ASP.NET来托管您的网站,您可以执行以下操作:

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);

    }

之后,在您希望广告在网站上的任何地方,将PlaceHolder添加到名为phBigAd的ASPX标记页面中:

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

当然,在附加到StringBuilder时,您需要用自己的代码替换Adsense代码,但以上是您可以使用的一般格式。