Skip to content

Commit 256c30c

Browse files
authored
feat(android): support private plugin callbacks and commands (#6863)
1 parent 73c803a commit 256c30c

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"tauri": patch
3+
---
4+
5+
Enhance parsing of annotated Android plugin methods to support private functions.

core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginHandle.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ import androidx.core.app.ActivityCompat
1212
import app.tauri.PermissionHelper
1313
import app.tauri.PermissionState
1414
import app.tauri.annotation.ActivityCallback
15-
import app.tauri.annotation.PermissionCallback
1615
import app.tauri.annotation.Command
16+
import app.tauri.annotation.PermissionCallback
1717
import app.tauri.annotation.TauriPlugin
1818
import java.lang.reflect.Method
19+
import java.util.Arrays
20+
1921

2022
class PluginHandle(private val manager: PluginManager, val name: String, val instance: Plugin, val config: JSObject) {
2123
private val commands: HashMap<String, CommandData> = HashMap()
@@ -130,7 +132,13 @@ class PluginHandle(private val manager: PluginManager, val name: String, val ins
130132
}
131133

132134
private fun indexMethods() {
133-
val methods: Array<Method> = instance.javaClass.methods
135+
val methods = mutableListOf<Method>()
136+
var pluginCursor: Class<*> = instance.javaClass
137+
while (pluginCursor.name != Any::class.java.name) {
138+
methods.addAll(listOf(*pluginCursor.declaredMethods))
139+
pluginCursor = pluginCursor.superclass
140+
}
141+
134142
for (method in methods) {
135143
if (method.isAnnotationPresent(Command::class.java)) {
136144
val command = method.getAnnotation(Command::class.java) ?: continue

core/tauri/mobile/android/src/main/java/app/tauri/plugin/PluginManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class PluginManager(val activity: AppCompatActivity) {
121121
plugins[pluginId]?.invoke(invoke)
122122
}
123123
} catch (e: Exception) {
124-
invoke.reject(e.message)
124+
invoke.reject(if (e.message?.isEmpty() != false) { e.toString() } else { e.message })
125125
}
126126
}
127127

0 commit comments

Comments
 (0)