From d693e526e8607129d7f7b62a10db715f3b87d2b9 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Sun, 23 Apr 2023 15:59:46 -0700 Subject: [PATCH] feat(android): add `onNewIntent` plugin hook (#6780) --- .changes/on-new-intent.md | 5 +++++ .../android/src/main/java/app/tauri/plugin/Plugin.kt | 5 +++++ .../src/main/java/app/tauri/plugin/PluginHandle.kt | 2 +- .../src/main/java/app/tauri/plugin/PluginManager.kt | 6 ++++++ .../android/app/src/main/generated/TauriActivity.kt | 8 ++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 .changes/on-new-intent.md diff --git a/.changes/on-new-intent.md b/.changes/on-new-intent.md new file mode 100644 index 00000000000..bdb769ea7cb --- /dev/null +++ b/.changes/on-new-intent.md @@ -0,0 +1,5 @@ +--- +"tauri": patch +--- + +Added the `onNewIntent` Plugin hook on Android. diff --git a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/Plugin.kt b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/Plugin.kt index 560e39f7cb5..13785ed398b 100644 --- a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/Plugin.kt +++ b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/Plugin.kt @@ -30,6 +30,11 @@ abstract class Plugin(private val activity: Activity) { return handle!!.config } + /** + * Handle a new intent being received by the application + */ + open fun onNewIntent(intent: Intent) {} + /** * Start activity for result with the provided Intent and resolve calling the provided callback method name. * diff --git a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginHandle.kt b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginHandle.kt index c8d1c2a7c1b..b3a48334f94 100644 --- a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginHandle.kt +++ b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginHandle.kt @@ -17,7 +17,7 @@ import app.tauri.annotation.Command import app.tauri.annotation.TauriPlugin import java.lang.reflect.Method -class PluginHandle(private val manager: PluginManager, val name: String, private val instance: Plugin, val config: JSObject) { +class PluginHandle(private val manager: PluginManager, val name: String, val instance: Plugin, val config: JSObject) { private val commands: HashMap = HashMap() private val permissionCallbackMethods: HashMap = HashMap() private val startActivityCallbackMethods: HashMap = HashMap() diff --git a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt index 77fd8599295..8e241d23645 100644 --- a/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt +++ b/core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt @@ -46,6 +46,12 @@ class PluginManager(val activity: AppCompatActivity) { } } + fun onNewIntent(intent: Intent) { + for (plugin in plugins.values) { + plugin.instance.onNewIntent(intent) + } + } + fun startActivityForResult(intent: Intent, callback: ActivityResultCallback) { startActivityForResultCallback = callback startActivityForResultLauncher.launch(intent) diff --git a/tooling/cli/templates/mobile/android/app/src/main/generated/TauriActivity.kt b/tooling/cli/templates/mobile/android/app/src/main/generated/TauriActivity.kt index f7f7a014eaf..765817ba932 100644 --- a/tooling/cli/templates/mobile/android/app/src/main/generated/TauriActivity.kt +++ b/tooling/cli/templates/mobile/android/app/src/main/generated/TauriActivity.kt @@ -1,7 +1,15 @@ package {{reverse-domain app.domain}}.{{snake-case app.name}} +import android.os.Bundle import app.tauri.plugin.PluginManager abstract class TauriActivity : WryActivity() { var pluginManager: PluginManager = PluginManager(this) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + if (intent != null) { + pluginManager.onNewIntent(intent) + } + } }