Надеюсь, это поможет!

ел, что этот вопрос задавался много раз, но все еще не может заставить мой код работать.

Я хочу моеWebView загрузить некоторый URL (скажем, www.google.com), а затем применить JavaScript, хранящийся вassets/jstest.js, который содержит следующее:

function test(){
document.bgColor="#00FF00"; //turns to green the background color
}

И вот где я пытаюсь загрузить JS:

@Override  
public void onPageFinished(WebView view, String url){
    view.loadUrl("javascript:(function() { "
                + " document.bgColor='#FF0000';" //turns to red the background color
                + " var script=document.createElement('script'); "
                + " script.setAttribute('type','text/javascript'); "
                + " script.setAttribute('src', 'file:///android_asset/jstest.js'); "
                + " script.onload = function(){ "
                + "     test(); "
                + " }; "
                + " document.getElementsByTagName('head')[0].appendChild(script); "
                + "})()"); 
} 

Я знаю, что здесь работает javascript, потому что цвет фона на самом деле становится красным, но по какой-то причине он не загружаетсяjstest.js, Я думаю, что проблема может быть в пути к файлу (я уверен, что каждая вторая строка кода JavaScript верна), но для меня это выглядит правильно. И файл находится в нужной папке.

Что мне не хватает?

РЕДАКТИРОВАТЬ:

посколькуWebResourceResponse класс доступен только с API уровня 11, вот что я понял в конце.

public void onPageFinished(WebView view, String url){
        String jscontent = "";
        try{
            InputStream is = am.open("jstest.js"); //am = Activity.getAssets()
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);

            String line;
            while (( line = br.readLine()) != null) {
                jscontent += line;
            }
            is.close(); 
        }
        catch(Exception e){}
        view.loadUrl("javascript:(" + jscontent + ")()"); 
    } 

сjstest.js просто содержащий:

function() {
    document.bgColor="#00FF00";
}

Ответы на вопрос(4)

Ваш ответ на вопрос