Android-просмотр в Интернете, загрузка файла javascript в папку с ресурсами

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

Я хочу, чтобы мой веб-просмотр загружал какой-то 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";
}
16
задан Brock Adams 10 March 2012 в 01:31
поделиться