我已经制作了一个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);
}
}`
答案 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代码,但以上是您可以使用的一般格式。