2012-05-13 43 views
2

我做了一个android应用程序,在web视图中显示我的网页的一部分。问题是网页上有一些AdSense广告,并且不允许在应用中显示它们。 所以问题是:是否有某种方式让它们在应用程序中不显示?如何让webview Android应用不显示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); 

    } 

}`

回答

1

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

0

首先,你需要你的用户代理字符串设置的东西,你可以很容易地发现,像这样:

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

其次,承载您的网站的服务器上,你需要动态地生成脚本,谷歌给你。如果你正在使用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); 

    } 

之后,一个占位符添加到名为phBigAd您的ASPX标记的页面中的任何地方,你希望自己的广告上现场:

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

当然,你将需要追加到StringBuilder时换成自己的AdSense代码,但上面的是你会去的一般格式。

相关问题