Intent
The Intent API provides functionality to handle intents from other apps and implement custom URI scheme handling in Acode plugins.
Overview
The Intent API allows plugins to:
- Handle intents when Acode is opened from other apps
- Process custom URI schemes in the format
acode://<module>/<action>/<value>
- Control intent behavior through event handlers
- Enable deep linking and file sharing between applications
For example, you could:
- Open specific files directly from your file manager
- Accept shared text content from messaging apps
- Implement "Open in Acode" functionality in other apps
- Create custom URI schemes for your plugin features
Compatibility Note
The Intent API is not supported in older versions of Acode. Always check if it's available before using.
Usage
Importing the API
const intent = acode.require('intent');
Methods
addHandler
Adds an intent handler function that will be called when intents are received.
addHandler(handler: (event: IntentEvent) => void): void
removeHandler
Removes a previously added intent handler.
removeHandler(handler: (event: IntentEvent) => void): void
The IntentEvent Object
The handler receives an IntentEvent
object with these properties:
module
(string): The module name from the URIaction
(string): The action to performvalue
(string): Additional data value
And these methods:
preventDefault()
: Prevents default intent handlingstopPropagation()
: Stops other handlers from executing
Examples
Basic intent handling:
const intent = acode.require('intent');
const handler = (event) => {
const { module, action, value } = event;
// Optional: prevent default behavior
// event.preventDefault();
// Optional: stop other handlers
// event.stopPropagation();
console.log(`Intent received: ${module}/${action}/${value}`);
};
// Register handler
intent?.addHandler(handler);
// Later: remove handler if needed
intent?.removeHandler(handler);
File opening handler:
const fileHandler = (event) => {
if (event.module === 'file' && event.action === 'open') {
// Open the file specified in event.value
editorManager.openFile(event.value);
event.preventDefault(); // Prevent default handling
}
};
intent?.addHandler(fileHandler);
Custom URI scheme handler:
const pluginHandler = (event) => {
if (event.module === 'myplugin') {
switch(event.action) {
case 'search':
// Handle search URI: acode://myplugin/search/query
performSearch(event.value);
break;
case 'create':
// Handle file creation: acode://myplugin/create/filename
createNewFile(event.value);
break;
}
event.preventDefault();
}
};
intent?.addHandler(pluginHandler);
Common Use Cases
Opening specific files when launched from other apps: - File managers can open files directly in Acode - Handle shared files from other applications
Handling custom URI schemes for plugin functionality: - Implement deep linking to specific plugin features - Create custom commands accessible via URIs - Enable cross-app integration workflows
Intercepting intents to implement custom behaviors: - Custom file type handlers - Special handling for shared content - Integration with external tools and services