Есть класс 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? Или может есть вариант лучше сделать проверку, чтобы эти функции нельзя была запустить на других сайтах?