Как отследить URL WebView в JavascriptInterface?

Есть класс JavascriptInterface для взаимодействия JS в WebView и Java android.

class JavaScriptInterface {
Context mContext;
WebView mW;
JavaScriptInterface(Context c,WebView w) {
    mContext = c;
    mW = w;
}
@JavascriptInterface
public void saveJson(String json) {
    if(mW.getUrl().indexOf("file:///android_asset/") == 0){
        if(mContext instanceof MainActivity)
            ((MainActivity)mContext).saveFL(json);
    }
}
@JavascriptInterface
public String loadJson() {
    if(mW.getUrl().indexOf("file:///android_asset/") == 0){
        if(mContext instanceof MainActivity)
           return ((MainActivity)mContext).loadFL();
    }
    return "[]";
}

}

И в целях безопасности, вызов методов из класса JavascriptInterface хочется сделать только если URL соответствует внутренним ресурсам. Но реализация выше выдает ошибку на строке с mW.getUrl:

A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread.

Как можно передать в методы JavascriptInterface текущий URL в WebView? Или может есть вариант лучше сделать проверку, чтобы эти функции нельзя была запустить на других сайтах?


Ответы (0 шт):