An app function is a piece of functionality that apps expose to the system for cross-app orchestration.
@AppFunctionServiceclass NotosAppFunctions {
@AppFunction
suspend fun createNote(
context: AppFunctionContext,
text: String,
): Long = ...
}
class NotosAppFunctions {
/**
* Create a note given some text.
* Notes must be less than 2000 characters.
*/
@AppFunction(isDescribedByKDoc = true)
suspend fun createNote(
context: AppFunctionContext,
text: String,
): Long = ...
}
<uses-permission android:name="android.permission.EXECUTE_APP_FUNCTIONS"/>
<queries>
<package android:name="dev.sanson.notos"/>
</queries>
val manager = AppFunctionsManagerCompat.getInstance(context)
val searchSpec = AppFunctionSearchSpec(
packageNames = setOf("dev.sanson.notos"),
schemaCategory = "???",
schemaName = "???",
minSchemaVersion = 0 // ???
)
val functionPackages: Flow<List<AppFunctionPackageMetadata>> =
manager.observeAppFunctions(searchSpec)
val request = ExecuteAppFunctionRequest(
targetPackageName = "dev.sanson.notos",
functionIdentifier = "dev.sanson.notos.NotosAppFunctions#createNote",
functionParameters = ...
)
val manager = AppFunctionsManagerCompat.getInstance(context)
val response = manager.executeAppFunction(request)
val manager = AppFunctionsManagerCompat.getInstance(context)
val response = manager.executeAppFunction(request) // 💥
Source: https://www.androidauthority.com/android-16-qpr2-expected-features-3588166/