Специальная обработка символов в версии 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("<", "<").replace(">", ">"));
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("Ӓ").toString();
Log.d(TAG,response);