Genadinik
Genadinik

Reputation: 18649

Android - can't seem to enable JavaScript on a WebView?

Is there a way to enable JavaScript in a WebView?

I am currently trying to enable JavaScript by doing this:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);   
    webview = new WebView(this);
    setContentView(webview);

    webview.getSettings().setAppCacheEnabled(false);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setInitialScale(1);
    webview.getSettings().setPluginState(PluginState.ON);

    WebSettings webSettings = webview.getSettings();

    webSettings.setLoadsImagesAutomatically(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setBuiltInZoomControls(true);  
    webSettings.setUseWideViewPort(true);

    webview.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);              
            return false;
        }
    });        


    webview.setWebChromeClient(new WebChromeClient(){});

    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setAppCachePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/cache");
    webSettings.setDatabaseEnabled(true);
    webSettings.setDatabasePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/databases");


    webview.loadUrl("http://www.youtube.com/user/Okudjavavich");    
}

But JS seems to not be enabled because the YouTube videos do not play YouTube ads. Would anyone know what may be the problem?

Upvotes: 0

Views: 1462

Answers (1)

CommonsWare
CommonsWare

Reputation: 1007584

Is there a way to enable JavaScript in a WebView?

Yes, via the code that you have:

webview.getSettings().setJavaScriptEnabled(true);

In your case, the problem was that your test (playing YouTube videos and looking for ads) was complicated. A simpler test helped determine that JavaScript indeed was enabled, but that something else was influencing Google's YouTube page-serving. In this case, it appears to be based on user agent.

Upvotes: 2

Related Questions