2012-05-13 72 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代碼,但上面的是你會去的一般格式。

相關問題