Вопрос по android – Чтение HTML-файла из ресурсов

11

У меня есть HTML-файл в активах, aaa.html. Я хочу прочитать содержимое файла HTML и заменить его из другой строки.

Является ли этот способ правильным или есть какой-то другой вариант.

мой код:

File f = new File("file:///android_asset/aaa.html");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

Но его файл подачи не найден, где при загрузке в веб-представление загружает файл.

Возможный дубликатhow to read html content from assets folder in android Suhaib

Ваш Ответ

2   ответа
3

mWebView.loadUrl("file:///android_asset/myfile.html");

Вы хотите заменить содержимое внутри тегов HTML-файла, чтобы код класса решения был здесь ..

public class CardDetail {
    public static String newHtmlString = "";

    // private Context context;

    @SuppressWarnings("rawtypes")
    public String getNewHtmlString(String htmlString, HashMap hm) {
        try {
            StringTokenizer st = new StringTokenizer(htmlString, "##");
            CardDetail.newHtmlString = "";
            while (st.hasMoreTokens()) {
                String token = st.nextToken();
                CardDetail.newHtmlString += token;
                if (st.hasMoreTokens()) {
                    String token2 = st.nextToken();
                    if (token2.equals("NAME") || token2.equals("POSITION") || token2.equals("COMPANY") || token2.equals("PHOTOURL"))
                        CardDetail.newHtmlString += hm.get(token2);
                    if (token2.equals("SKYPE_CONTAINER1")
                            || token2.equals("TWITTER_CONTAINER1")
                            || token2.equals("PHONENUMBER_CONTAINER1")
                            || token2.equals("EMAIL_CONTAINER1")
                            || token2.equals("ADDRESS_CONTAINER1")) {
                        String replaceString = st.nextToken();
                        String tokenMiddle = (String) hm.get(st.nextToken());                       
                        if (!tokenMiddle.equals("")) {
                            replaceString += tokenMiddle;
                            CardDetail.newHtmlString += replaceString   + st.nextToken();
                            st.nextElement();
                        } else {
                            st.nextElement();
                            st.nextElement();
                        }
                    }
                }
            }
//          Log.i("convertedHTMLString", newHtmlString);
            return CardDetail.newHtmlString;

//          htmlString = "<img src='" + hm.get("PHOTOURL") + "' width=80 height=80>";           
//          return htmlString;
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return null;
    }

    @SuppressWarnings("unchecked")
    public HashMap<?, ?> getProfileHashMap(JSONObject jsonObject) {
        @SuppressWarnings("rawtypes")
        HashMap hm = new HashMap();
        jsonObject = (new JSONConverterClass()).convertJsonObjectToCardDetail(jsonObject);
        try {
            hm.put("EMAIL", jsonObject.getString("email"));
            hm.put("NAME", jsonObject.getString("firstname") + " " + jsonObject.getString("lastname"));
            hm.put("COMPANY", jsonObject.getString("company_name"));
            hm.put("POSITION", jsonObject.getString("position"));
            hm.put("WEBSITE", jsonObject.getString("website"));
            hm.put("PHONENUMBER", jsonObject.getString("phonenumber"));
            hm.put("PHOTOURL", jsonObject.getString("picture_url"));
            hm.put("SKYPE", jsonObject.getString("skype_username"));
            hm.put("TWITTER", jsonObject.getString("twitter_username"));
            hm.put("ADDRESS", jsonObject.getString("generic_location"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return hm;
    }
}

convertJsonObjectToCardDetail этот класс просто замените строку значениями из Json надеюсь, что это решит вашу проблему ....

Дайте мне знать, что это работает для вас .. если помогает оценить.
38
InputStream is = getAssets().open("aaa.html");
int size = is.available();

byte[] buffer = new byte[size];
is.read(buffer);
is.close();

String str = new String(buffer);
str = str.replace("old string", "new string");
Большое спасибо, это сработало. zaiff
Вы не можете сохранить этот файл, потому что все элементы в папке ASSET доступны только для чтения, но вы можете загрузить эту строку непосредственно в WebView
Хорошо, тогда я могу написать строку html в файл и сохранить ее в ресурсах с расширением .html. zaiff
нет, но вы можете записать этот файл в SDCard как HTML
Я заменил строку сейчас, я хочу снова сохранить эту обновленную строку в этом файле? zaiff

Похожие вопросы