@Maksim_Demidov

HTML из raw в assets + чтение этих файлов?

Всем доброго времени суток! И так. У меня есть ListView с множеством итемов, по нажатию определенного я подгружаю определенный html файл из папки raw. Но сейчас я имею необходимость переместить все файлы из папки raw в папку assets, но не знаю, что мне нужно поменять в коде для правильного чтения из папки assets (чтения (не открытия) именно всех файлов для последующего открытия нужного), исходя из моего кода. Код:

В методе onCreate

webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);



    Intent intent = getIntent();
    //получаем строку и формируем имя ресурса
    String resName = "file:///android_asset/" + "file" + intent.getIntExtra("head", 0);
    Log.i("name", resName);
    Context context = getBaseContext(); //получаем контекст

    //читаем текстовый файл из ресурсов по имени
    String text = readRawTextFile(context, getResources().getIdentifier(resName, "raw", "my_package_name"));

    webView.loadDataWithBaseURL("file:///android_asset/", text, "text/html", "utf-8", null);
}

Код чтения из raw-ресурсов:

public static String readRawTextFile(Context context, int resId)
{
    InputStream inputStream = context.getResources().openRawResource(resId);

    InputStreamReader inputReader = new InputStreamReader(inputStream);
    BufferedReader buffReader = new BufferedReader(inputReader);
    String line;
    StringBuilder builder = new StringBuilder();

    try {
        while (( line = buffReader.readLine()) != null) {
            builder.append(line);
            builder.append("\n");
        }
    } catch (IOException e) {
        return null;
    }
    return builder.toString();
}


Пробовал множество методов чтения файлов, предложенных ресурсами интернета и, в частности, на англоязычных вопросах stackoverflow. На каждый метод находился по одной-две ошибки, а половина мне и вовсе не подошла, так как там был метод для чтения и открытия уже одного файла, когда мне нужно чтение всех файлов, почти тоже самое, что у меня сейчас, но из папки assets.
  • Вопрос задан
  • 878 просмотров
Решения вопроса 1
@Maksim_Demidov Автор вопроса
Решил сделать по минимализму. Получилось! Намного-намного проще, чем я думал.
К собачьим чертям удалил все после строки:
String resName = "file:///android_asset/" + "file" + intent.getIntExtra("head", 0);


И сделал такой вид:
webView.loadUrl("file:///android_asset/" + resName + ".html");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы