diff --git a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java index 3a0bd902702..dd21fc09fb1 100644 --- a/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java +++ b/renderer/native/android/src/main/java/com/tencent/renderer/component/image/ImageLoader.java @@ -155,9 +155,29 @@ private void handleRequestProgress(final long total, final long loaded, } } + private void appendCustomRequestParams(@NonNull HashMap requestParams, + @NonNull Map initProps) { + for (Map.Entry entry : initProps.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + try { + requestParams.put(key, String.valueOf(value)); + } catch (Exception ignore) { + // For now, support custom attributes that can be converted to strings + } + } + } + @NonNull - private HashMap generateRequestParams(int width, int height) { + private HashMap generateRequestParams(int width, int height, + @Nullable Map initProps) { HashMap requestParams = new HashMap<>(); + if (initProps != null) { + Object value = initProps.get("props"); + if (value instanceof Map) { + appendCustomRequestParams(requestParams, (Map) value); + } + } requestParams.put("width", String.valueOf(width)); requestParams.put("height", String.valueOf(height)); requestParams.put(REQUEST_CONTENT_TYPE, REQUEST_CONTENT_TYPE_IMAGE); @@ -167,7 +187,7 @@ private HashMap generateRequestParams(int width, int height) { @Nullable public ImageDataSupplier fetchImageSync(@NonNull String url, @Nullable Map initProps, int width, int height) { - HashMap requestParams = generateRequestParams(width, height); + HashMap requestParams = generateRequestParams(width, height, initProps); ResourceDataHolder dataHolder = mVfsManager.fetchResourceSync(url, null, requestParams); byte[] bytes = dataHolder.getBytes(); if (dataHolder.resultCode @@ -215,7 +235,7 @@ public void fetchImageAsync(@NonNull final String url, if (checkRepeatRequest(urlKey, listener)) { return; } - HashMap requestParams = generateRequestParams(width, height); + HashMap requestParams = generateRequestParams(width, height, initProps); mVfsManager.fetchResourceAsync(url, null, requestParams, new FetchResourceCallback() { @Override