Arhlit - информационные технологии

Внедрить CSS из URL-адреса Android Studio

Я использую скрипт InjectCSS для использования дополнительного файла CSS в веб-просмотре. Но скрипт берет файл CSS из папки с ресурсами, я хочу, чтобы файл CSS был размещен на внешнем хосте.

    private void injectCSS() {
    try {


        InputStream inputStream = getAssets().open("style.css");

            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            inputStream.close();

            String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
            wv.loadUrl("javascript:(function() {" +
                    "var parent = document.getElementsByTagName('head').item(0);" +
                    "var style = document.createElement('style');" +
                    "style.type = 'text/css';" +
                    // Tell the browser to BASE64-decode the string into your script !!!
                    "style.innerHTML = window.atob('" + encoded + "');" +
                    "parent.appendChild(style)" +
                    "})();");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Я попытался изменить входной поток на URL-адрес, но это не сработало.

InputStream inputSteam = new URL("http://www.website.com/folder/style.css").openStream();

  • Кто-нибудь может мне помочь? 11.02.2018

Ответы:


1

Если вам нужно использовать кодировку BASE64, вам нужно это

InputStream inputSteam = new URL("http://www.website.com/folder/style.css").openStream();
String encoded  = new String(readBytes(inputStream),  Base64.NO_WRAP);

// ...


public byte[] readBytes(InputStream inputStream) throws IOException {
    // this dynamically extends to take the bytes you read
    ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();

    // this is storage overwritten on each iteration with bytes
    int bufferSize = 1024;
    byte[] buffer = new byte[bufferSize];

    // we need to know how may bytes were read to write them to the byteBuffer
    int len = 0;
    while ((len = inputStream.read(buffer)) != -1) {
        byteBuffer.write(buffer, 0, len);
    }

    // and then we can return your byte array.
    return byteBuffer.toByteArray();
}
28.02.2018
Новые материалы

12 сайтов с искусственным интеллектом, которые поразят вас
Приготовьтесь поразить воображение Сегодня существует несколько веб-сайтов, использующих искусственный интеллект (ИИ). От индивидуальных рекомендаций по новостям до более умных поисковых..

Скрытый технический долг в системах машинного обучения [NeurIPS 2015]
Что такое технический долг? Технический долг — это метафора, введенная Уордом Каннингемом в 1992 году, чтобы объяснить долгосрочные затраты, связанные с быстрым продвижением в разработке..

Алгоритм быстрой сортировки в Python
Всем привет, добро пожаловать на programminginpython.com . Здесь я покажу вам, как реализовать алгоритм быстрой сортировки в Python. В предыдущих статьях я рассмотрел Сортировку вставкой ,..

Как использовать манипулирование объектами в JavaScript
Объекты являются важным строительным блоком JavaScript. Они позволяют группировать свойства и методы вместе. Объект представляет собой набор свойств. Свойства идентифицируются с..

Разработка игр с помощью Godot Engine: мощный инструмент с открытым исходным кодом
Разработка игр — творческий и сложный процесс, требующий множества навыков и инструментов. Одним из наиболее важных инструментов является игровой движок, который представляет собой программную..

От XML к аннотациям: переход к современной конфигурации Spring
Введение Фреймворк Spring претерпел значительную эволюцию с момента своего создания. Одним из заметных изменений стал переход от конфигураций на основе XML к конфигурациям, управляемым..

Я люблю Руби!
Я люблю Руби! Мне это нравится по той же причине, по которой мне нравится программировать на Python. Он настолько интуитивно понятен, а встроенные методы упрощают решение проблем. Если вы..