HotFudgeSunday
HotFudgeSunday

Reputation: 1403

Android: can't get javascript to work on WebView even with setJavaScriptEnabled(true)

I'm a complete noob to Android and this is just a simple test. Based it on this tutorial.

Here goes the HelloWebApp.java

package com.company.something;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class HelloWebApp extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView webView = (WebView)findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("file:///android_asset/www/index.html");
    }
}

And this is from res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<WebView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/webView"
    />
</LinearLayout>

Plus this is all I changed on the Manifest:

<activity android:name=".HelloWebApp"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:screenOrientation="landscape">

As for the javascript, I've tried everything. Complicated, simple, inside the body at the bottom, in a button, on the head. Nothing works. The html works fine.

Thanks in advance for any help.

Upvotes: 7

Views: 30001

Answers (3)

computingfreak
computingfreak

Reputation: 5099

As discussed in https://stackoverflow.com/a/7561674/1818089,

along with

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

you need to enable DOM storage

WebSettings webSettings = webView.getSettings();
webSettings.setDomStorageEnabled(true);

Upvotes: 2

Red Abhi
Red Abhi

Reputation: 1

just add

import android.webkit.WebChromeClient;
import android.webkit.WebView;

in YourApp.java

Upvotes: -2

no.good.at.coding
no.good.at.coding

Reputation: 20371

You missed the part in the tutorial where he adds

webView.setWebChromeClient(new WebChromeClient());

right after adding

webView.getSettings().setJavaScriptEnabled(true);

The JavaDoc for this method says:

Sets the chrome handler. This is an implementation of WebChromeClient for use in handling Javascript dialogs, favicons, titles, and the progress. This will replace the current handler.

Upvotes: 23

Related Questions