Специальная обработка символов в версии Android-N для Android-N

У меня есть код, который, очевидно, работает хорошо до Android 6.0, для обработки специальных символов, как у шведских символов. Но это не очень хорошо работает в версии Android 7.0, любое решение, а также HTTP.CONTENT_TYPE не рекомендуется. Это дополнительная строка кода, которая помогла мне заставить его работать до Android 6.0

 response.headers.put(HTTP.CONTENT_TYPE, response.headers.get("content-type"));

На данный момент я получаю характер, как Å,å,Ä,ä,Ö,ö, как "& # 1234" и т. Д., Типа значения в ответ. Любая модификация или активные антидеприцируемые коды будут полезны,

      @Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
    try {
        Response<T> resp = null;

        //handling special character's and content type based on request type
        //http may be deprecated, but we are handling it over org.apache library in gradle
        response.headers.put(HTTP.CONTENT_TYPE, response.headers.get("content-type"));
        String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));

        Gson gson = new GsonBuilder().create();
        switch (mJsonResponseType) {

            case JSON_OBJECT:
                resp = Response.success(gson.fromJson(json, mResponseClass), HttpHeaderParser.parseCacheHeaders(response));
                break;

            case JSON_ARRAY:
                // NOTE: For this to work properly the mResponseClass must be set to an array type, e.g. MyClass[]
                resp = (Response<T>) Response.success(gson.fromJson(json, mResponseClass), HttpHeaderParser.parseCacheHeaders(response));
                break;

            default:
                resp = (Response<T>) Response.success(json, HttpHeaderParser.parseCacheHeaders(response));
                break;
        }
        return resp;

    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));

    } catch (JsonSyntaxException e) {
        return Response.error(new ParseError(e));
    }
}

1 ответ

Очевидно, у Volley есть встроенный способ обработки своего класса Request, где я нашел что-то вроде приватной статической final String DEFAULT_PARAMS_ENCODING = "UTF-8"; Поэтому я внес изменения в специальную секцию с методом, в котором html-тегированные данные приходили в ответ:)

 public static Spanned fromHtml(String html) {
            if (NullCheckUtils.isEmpty(html)) {
                html = "";
            }
            html = (html.replace("&lt;", "<").replace("&gt;", ">"));
            Spanned result;
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                result = Html.fromHtml(html.trim(), Html.FROM_HTML_MODE_LEGACY);
            } else {
                result = Html.fromHtml(html.trim());
            }
            return result;
        }

String response=fromHtml("&#1234").toString();
Log.d(TAG,response);
Другие вопросы по тегам