Skip to content

Application Themes

The Application Themes module allows you to download custom theming files for an application at runtime. The application is then responsible for providing these files to the Fiori UI Theming component.

Downloading Themes

Two APIs are provided to download theme files from the mobile server:

suspend fun downloadTheme(host: String, appID: String, protocol: String = "https", port: Int = 443, silent: Boolean = false): ServiceResult<List<String>> = withContext(IO) { ... }
suspend fun downloadTheme(serviceUrl: String, appID: String, silent: Boolean = false): ServiceResult<List<String>> { ... }

Both APIs will run on the IO thread and return the result using ServiceResult. The result is a list of downloaded theme file paths. To download theme files, set appID and host or serviceUrl. Other parameters have default values and can be left alone.

Sample usage:

runOnUiThread(() -> new ThemeDownloadService(context).downloadTheme("https://example/mobileservices", "com.sap.wizapp", false, new Continuation<ServiceResult<List<String>>>() {
    @NonNull
    @Override
    public CoroutineContext getContext() {
        return EmptyCoroutineContext.INSTANCE;
    }

    @Override
    public void resumeWith(@NonNull Object o) {
        if (o instanceof ServiceResult.SUCCESS) {
            String filePaths = ((ServiceResult.SUCCESS<?>) o).getData().toString();
            ...
        } else {
            Log.e("TEST", ((ServiceResult.FAILURE<?>) o).getMessage());
        }
    }
}));
MainScope().launch {
    when(val result = ThemeDownloadService(context).downloadTheme(serviceUrl = "https://example/mobileservices", appID = "com.sap.wizapp")) {
        is ServiceResult.SUCCESS -> {
            result.data?.also { filePaths ->
                ...
            }
        }
        is ServiceResult.FAILURE -> Log.e("TEST", result.message)
    }
}

Get Theme File And Logos

There are APIs provided to get a theme file and logos:

  • getThemeFile() to get the theme file in JSON format
  • getLightLogo() to get the logo image for a light theme
  • getDarkLogo() to get the logo image for a dark theme

Last update: November 17, 2022