Android webview, carregando o arquivo javascript na pasta de ativos

Eu já vi essa pergunta várias vezes, mas ainda não consigo fazer meu código funcionar.

Eu quero o meu webview para carregar um URL (por exemplo, www.google.com) e, em seguida, aplique algum javascript armazenado emassets/jstest.js, que contém o seguinte:

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

E aqui é onde eu tento carregar o 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); "
                + "})()"); 
} 

Eu sei que o javascript aqui funciona porque a cor do plano de fundo fica realmente vermelha, mas por algum motivo não será carregadajstest.js. Acho que o problema pode estar no caminho do arquivo (tenho certeza de que todas as outras linhas do código javascript estão corretas), mas parece correto para mim. E o arquivo está na pasta correta.

O que estou perdendo

EDITA:

Desde aWebResourceResponse classe @ está disponível apenas no nível 11 da API. Aqui está o que eu descobri no fina

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 + ")()"); 
    } 

com ojstest.js simplesmente contendo:

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

questionAnswers(4)

yourAnswerToTheQuestion