ソースを参照

feat(android): Add onResume and onPause to android plugins (#8092)

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
Fabian-Lars 1 年間 前
コミット
b89de9fa43

+ 5 - 0
.changes/android-onresume.md

@@ -0,0 +1,5 @@
+---
+'tauri': 'patch:enhance'
+---
+
+Add support for onResume and onPause events in android plugins.

+ 10 - 7
core/tauri/mobile/android-codegen/TauriActivity.kt

@@ -13,15 +13,18 @@ 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)
-    }
-  }
-
   override fun onNewIntent(intent: Intent) {
     super.onNewIntent(intent)
     pluginManager.onNewIntent(intent)
   }
+
+  override fun onResume() {
+    super.onResume()
+    pluginManager.onResume()
+  }
+
+  override fun onPause() {
+    super.onPause()
+    pluginManager.onPause()
+  }
 }

+ 12 - 0
core/tauri/mobile/android/src/main/java/app/tauri/plugin/Plugin.kt

@@ -8,6 +8,7 @@ import android.app.Activity
 import android.content.Intent
 import android.content.pm.PackageManager
 import android.net.Uri
+import android.os.Bundle
 import android.webkit.WebView
 import androidx.core.app.ActivityCompat
 import app.tauri.FsUtils
@@ -59,6 +60,17 @@ abstract class Plugin(private val activity: Activity) {
    */
   open fun onNewIntent(intent: Intent) {}
 
+
+  /**
+   * This event is called just before another activity comes into the foreground.
+   */
+  open fun onPause() {}
+
+  /**
+   * This event is called when the user returns to the activity. It is also called on cold starts.
+   */
+  open fun onResume() {}
+
   /**
    * Start activity for result with the provided Intent and resolve calling the provided callback method name.
    *

+ 13 - 0
core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt

@@ -6,6 +6,7 @@ package app.tauri.plugin
 
 import android.content.Context
 import android.content.Intent
+import android.os.Bundle
 import android.webkit.WebView
 import androidx.activity.result.ActivityResult
 import androidx.activity.result.ActivityResultLauncher
@@ -71,6 +72,18 @@ class PluginManager(val activity: AppCompatActivity) {
     }
   }
 
+  fun onPause() {
+    for (plugin in plugins.values) {
+      plugin.instance.onPause()
+    }
+  }
+
+  fun onResume() {
+    for (plugin in plugins.values) {
+      plugin.instance.onResume()
+    }
+  }
+
   fun startActivityForResult(intent: Intent, callback: ActivityResultCallback) {
     startActivityForResultCallback = callback
     startActivityForResultLauncher.launch(intent)