Android - Method Module Interface
The MethodModule interface is used when you need to run native logic without requiring any UI
elements. It supports two distinct patterns:
- Tecton-triggered calls — Tecton invokes a method on your module and receives a string callback in return.
- Core-initiated requests — The Q2 application requests structured data from your module
using a typed
MethodRequest.
Tecton-Triggered Implementation
To call a MethodModule from Tecton, a Tecton Caliper extension is required. Please refer to the
Caliper guides to get started.
To implement a Tecton-triggered MethodModule:
- Create a class and inherit from
MethodModule. - Define a function to handle your desired logic.
- Once the operation is complete, trigger the
MethodModule.MethodModuleCallbackto return the result.
class TestMethodModule(private val sdkUtils: SdkUtils): MethodModule {
fun testMethod(context: Context, data: String, callback: MethodModule.MethodModuleCallback) {
// Once you are done, trigger the callback and send back the data you want.
callback.returnValue(data)
}
}
To call your MethodModule from Tecton, follow the
Tecton - callModule guide.
Core-Initiated Requests
The MethodModule interface also supports an optional request function that allows your module
to respond to typed requests from the Q2 application and return structured JSON data:
suspend fun request(request: MethodRequest): JSONObject? = null
The default implementation returns null, so existing MethodModule implementations require no changes.
Rather than introducing a new interface for each one-off requirement, a new MethodRequest enum value
is defined per use case. The shape of the returned JSONObject is defined per request type.
MethodRequest: OAUTH_AUTHORIZATION_PARAMS
Appends key-value pairs to the following OAuth 2.0 operations in Q2's InboundSSO authentication module. All data is URL encoded by InboundSSO before being added.
/authorization— key-value pairs are appended to the authorization URL as query parameters/refresh— key-value pairs are added to the body of the refresh token request
Expected return format:
{
"foo": "foo value"
}
Module implementation example:
class MyMethodModule : MethodModule {
override suspend fun request(request: MethodRequest): JSONObject? {
return if (request == MethodRequest.OAUTH_AUTHORIZATION_PARAMS) {
JSONObject().apply {
put("foo", "foo value")
}
} else {
null
}
}
}
Update Your settings.json
Ensure your settings.json file in the root of the DevApp is updated to reflect your
module changes. Learn more in Configuring settings.json.
identifier is required for MethodModuleSince 26.9.0 the identifier field on an sdk_modules entry is optional in general,
but a MethodModule is only reachable from Tecton and from Core's typed request
dispatcher via its identifier. A MethodModule entry with no identifier will
register but is silently unroutable — declare one.