如何使Webview Android应用程序不显示Adsense广告?

3

我制作了一个安卓应用程序,在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个回答

1

如果内容是动态生成的,您可以在服务器端处理此问题。只需在 Android 应用程序发出请求时,让 Web 服务器不显示广告单元。在 Android 端显式设置用户代理,并在构建模板时进行检查。


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

    }

在此之后,您需要在 ASPX 标记页中添加一个名为 phBigAd 的 PlaceHolder,将其放置在您希望广告出现的任何位置:
<asp:PlaceHolder ID="phBigAd" runat="server" />

当然,在将其附加到StringBuilder时,您需要使用自己的Adsense代码进行替换,但上述内容就是一般的格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接