默认的 WebView 设置并未针对广告进行优化。请使用 WebSettings API 来配置 WebView,以便实现下列功能:
JavaScript
访问本地存储空间
自动播放视频
Java
importandroid.webkit.CookieManager;importandroid.webkit.WebView;publicclassMainActivityextendsAppCompatActivity{privateWebViewwebView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);webView=findViewById(R.id.webview);// Let the web view accept third-party cookies.CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true);// Let the web view use JavaScript.webView.getSettings().setJavaScriptEnabled(true);// Let the web view access local storage.webView.getSettings().setDomStorageEnabled(true);// Let HTML videos play automatically.webView.getSettings().setMediaPlaybackRequiresUserGesture(false);}}
Kotlin
importandroid.webkit.CookieManagerimportandroid.webkit.WebViewclassMainActivity:AppCompatActivity(){lateinitvarwebView:WebViewoverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)webView=findViewById(R.id.webview)// Let the web view accept third-party cookies.CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true)// Let the web view use JavaScript.webView.settings.javaScriptEnabled=true// Let the web view access local storage.webView.settings.domStorageEnabled=true// Let HTML videos play automatically.webView.settings.mediaPlaybackRequiresUserGesture=false}}
加载 WebView 内容
Cookie 和网页网址对于 WebView 创收至关重要,只有在 loadUrl() 与基于网络的网址搭配使用时,才能按预期方式发挥作用。为了优化 WebView 性能,请直接从基于网络的网址加载 Web 内容。避免使用 WebViewAssetLoader、从设备加载资源或动态生成 Web 内容。
Java
importandroid.webkit.CookieManager;importandroid.webkit.WebView;publicclassMainActivityextendsAppCompatActivity{privateWebViewwebView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);webView=findViewById(R.id.webview);// Let the web view accept third-party cookies.CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true);// Let the web view use JavaScript.webView.getSettings().setJavaScriptEnabled(true);// Let the web view access local storage.webView.getSettings().setDomStorageEnabled(true);// Let HTML videos play automatically.webView.getSettings().setMediaPlaybackRequiresUserGesture(false);// Load the URL for optimized web view performance.webView.loadUrl("https://google.github.io/webview-ads/test/");}}
Kotlin
importandroid.webkit.CookieManagerimportandroid.webkit.WebViewclassMainActivity:AppCompatActivity(){lateinitvarwebView:WebViewoverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)webView=findViewById(R.id.webview)// Let the web view accept third-party cookies.CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true)// Let the web view use JavaScript.webView.settings.javaScriptEnabled=true// Let the web view access local storage.webView.settings.domStorageEnabled=true// Let HTML videos play automatically.webView.settings.mediaPlaybackRequiresUserGesture=false// Load the URL for optimized web view performance.webView.loadUrl("https://google.github.io/webview-ads/test/")}}
[null,null,["最后更新时间 (UTC):2025-08-31。"],[[["\u003cp\u003eThis guide explains how to configure Android \u003ccode\u003eWebView\u003c/code\u003e for optimal ad monetization by enabling features like third-party cookies, JavaScript, and local storage access.\u003c/p\u003e\n"],["\u003cp\u003eIt is crucial to apply all recommendations to every \u003ccode\u003eWebView\u003c/code\u003e instance in your app for consistent ad performance.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers should use \u003ccode\u003eloadUrl()\u003c/code\u003e with network-based URLs directly to ensure proper functionality of cookies and optimized web view performance.\u003c/p\u003e\n"],["\u003cp\u003eA provided test URL helps verify the effectiveness of your settings for ad integration during development.\u003c/p\u003e\n"],["\u003cp\u003eFor production, replace the test URL with the intended URL for your \u003ccode\u003eWebView\u003c/code\u003e to load.\u003c/p\u003e\n"]]],[],null,["# Set up WebView\n\nIf your app utilizes `\n`[`WebView`](//developer.android.com/reference/android/webkit/WebView) to display web content, it's\nrecommended to configure it so that content can be optimally monetized with ads.\n\nThis guide shows you how to provide information about how to configure a\n`WebView` object.\n| **Important:** To properly set up and optimize `WebView`, apply all of the following recommendations to each `WebView` instance in your app. To help identify each web view, toggle the [\"highlight-all-webviews\"](//chromium.googlesource.com/chromium/src/+/main/android_webview/docs/developer-ui.md#flag-ui) flag in WebView DevTools to highlight the web views in your app with a yellow tint.\n\nEnable third-party cookies\n--------------------------\n\nTo improve your user's ad experience and be consistent with Chrome's\n[cookie policy](//policies.google.com/technologies/cookies), enable third-party\ncookies on your `WebView` instance. \n\n### Java\n\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);\n\n### Kotlin\n\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)\n\nWeb settings\n------------\n\nDefault `WebView` settings are not optimized for ads. Use the\n[`WebSettings`](//developer.android.com/reference/android/webkit/WebSettings)\nAPIs to configure your `WebView` for:\n\n- JavaScript\n- Access to local storage\n- Automatic video play\n\n### Java\n\n import android.webkit.CookieManager;\n import android.webkit.WebView;\n\n public class MainActivity extends AppCompatActivity {\n private WebView webView;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n webView = findViewById(R.id.webview);\n\n // Let the web view accept third-party cookies.\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);\n // Let the web view use JavaScript.\n webView.getSettings().setJavaScriptEnabled(true);\n // Let the web view access local storage.\n webView.getSettings().setDomStorageEnabled(true);\n // Let HTML videos play automatically.\n webView.getSettings().setMediaPlaybackRequiresUserGesture(false);\n }\n }\n\n### Kotlin\n\n import android.webkit.CookieManager\n import android.webkit.WebView\n\n class MainActivity : AppCompatActivity() {\n lateinit var webView: WebView\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.activity_main)\n webView = findViewById(R.id.webview)\n\n // Let the web view accept third-party cookies.\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)\n // Let the web view use JavaScript.\n webView.settings.javaScriptEnabled = true\n // Let the web view access local storage.\n webView.settings.domStorageEnabled = true\n // Let HTML videos play automatically.\n webView.settings.mediaPlaybackRequiresUserGesture = false\n }\n }\n\nLoad web view content\n---------------------\n\nCookies and page URLs are important for web view monetization and only function\nas expected when\n[`loadUrl()`](//developer.android.com/reference/android/webkit/WebView#loadUrl(java.lang.String,%20java.util.Map%3Cjava.lang.String,java.lang.String%3E)) is used with a network-based URL. For optimized\n`WebView` performance, load web content\ndirectly from network-based URLs. Avoid using [`WebViewAssetLoader`](//developer.android.com/reference/androidx/webkit/WebViewAssetLoader), loading\nassets from the device, or generating web content dynamically.\n\n\n### Java\n\n import android.webkit.CookieManager;\n import android.webkit.WebView;\n\n public class MainActivity extends AppCompatActivity {\n private WebView webView;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n webView = findViewById(R.id.webview);\n\n // Let the web view accept third-party cookies.\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);\n // Let the web view use JavaScript.\n webView.getSettings().setJavaScriptEnabled(true);\n // Let the web view access local storage.\n webView.getSettings().setDomStorageEnabled(true);\n // Let HTML videos play automatically.\n webView.getSettings().setMediaPlaybackRequiresUserGesture(false);\n\n // Load the URL for optimized web view performance.\n webView.loadUrl(\"https://google.github.io/webview-ads/test/\");\n }\n }\n\n### Kotlin\n\n import android.webkit.CookieManager\n import android.webkit.WebView\n\n class MainActivity : AppCompatActivity() {\n lateinit var webView: WebView\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.activity_main)\n webView = findViewById(R.id.webview)\n\n // Let the web view accept third-party cookies.\n CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)\n // Let the web view use JavaScript.\n webView.settings.javaScriptEnabled = true\n // Let the web view access local storage.\n webView.settings.domStorageEnabled = true\n // Let HTML videos play automatically.\n webView.settings.mediaPlaybackRequiresUserGesture = false\n\n // Load the URL for optimized web view performance.\n webView.loadUrl(\"https://google.github.io/webview-ads/test/\")\n }\n }\n\nTest the web view\n-----------------\n\nDuring app development, we recommend that you load this test URL: \n\n https://google.github.io/webview-ads/test/\n\nto verify these settings have the intended effect on ads. The test URL has\nsuccess criteria for a complete integration if the following are observed:\n\n#### Web view settings\n\n- Third-party cookies work\n\n\u003c!-- --\u003e\n\n- First-party cookies work\n- JavaScript enabled\n\n\u003c!-- --\u003e\n\n- DOM storage enabled\n\n#### Video ad\n\n- The video ad plays inline and does not open in the full screen built-in player\n- The video ad plays automatically without clicking the play button\n- The video ad is replayable\n\nAfter testing is complete, substitute the test URL with the URL the web view\nintends to load."]]