Ошибка внедрения Javascript для Android Отказ от выполнения встроенного скрипта
Я сталкиваюсь со следующей проблемой:
Всякий раз, когда я пытаюсь внедрить JS (на внешний сайт) из файла ресурсов, я получаю следующую ошибку
Отказался выполнять встроенный скрипт, потому что он нарушает следующую директиву Политики безопасности контента: "script-src https:" unsafe-eval "". Для включения встроенного выполнения требуется ключевое слово unsafe-inline, хеш (sha256-...) или одноразовый номер (nonce-...').
Мой код
private void injectScriptFile(WebView view, String scriptFile) {
//inject function
InputStream input;
try {
input = getAssets().open(scriptFile);
byte[] buffer = new byte[input.available()];
input.read(buffer);
input.close();
// String-ify the script byte-array using BASE64 encoding !!!
String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
String loadFileJS = "" +
"var parent = document.getElementsByTagName('head').item(0);" +
"var script = document.createElement('script');" +
"script.type = 'text/javascript';" +
"script.async = true;"+
// Tell the browser to BASE64-decode the string into your script !!!
"script.innerHTML = window.atob('" + encoded + "');" +
"parent.appendChild(script);" ;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
webview.evaluateJavascript(loadFileJS, null);
} else {
view.loadUrl("javascript:(function() {" +
loadFileJS +
"})()");
}
} catch (IOException e) {
e.printStackTrace();
}
}
И вот как я вызываю функцию ввода
injectScriptFile(webview, "Jquery/jquery.min.js");
injectScriptFile(webview, "scripts/functionalityJS.js");
Этот код работает с некоторыми сайтами (например, Facebook), в то время как на других (например, Dropbox) я получаю сообщение об ошибке, упомянутое выше. Ошибка, однако, в определенных версиях Android (например, 5.1), в то время как в других версиях (например, 4.2.2) он работает отлично.
Любая помощь будет спасением жизни:)
Спасибо!