mirror of
https://github.com/tauri-apps/tauri.git
synced 2026-04-01 10:01:07 +02:00
feat(android): support private plugin callbacks and commands (#6863)
This commit is contained in:
committed by
GitHub
parent
73c803a561
commit
256c30c72b
5
.changes/android-enhance-method-parse.md
Normal file
5
.changes/android-enhance-method-parse.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"tauri": patch
|
||||
---
|
||||
|
||||
Enhance parsing of annotated Android plugin methods to support private functions.
|
||||
@@ -12,10 +12,12 @@ import androidx.core.app.ActivityCompat
|
||||
import app.tauri.PermissionHelper
|
||||
import app.tauri.PermissionState
|
||||
import app.tauri.annotation.ActivityCallback
|
||||
import app.tauri.annotation.PermissionCallback
|
||||
import app.tauri.annotation.Command
|
||||
import app.tauri.annotation.PermissionCallback
|
||||
import app.tauri.annotation.TauriPlugin
|
||||
import java.lang.reflect.Method
|
||||
import java.util.Arrays
|
||||
|
||||
|
||||
class PluginHandle(private val manager: PluginManager, val name: String, val instance: Plugin, val config: JSObject) {
|
||||
private val commands: HashMap<String, CommandData> = HashMap()
|
||||
@@ -130,7 +132,13 @@ class PluginHandle(private val manager: PluginManager, val name: String, val ins
|
||||
}
|
||||
|
||||
private fun indexMethods() {
|
||||
val methods: Array<Method> = instance.javaClass.methods
|
||||
val methods = mutableListOf<Method>()
|
||||
var pluginCursor: Class<*> = instance.javaClass
|
||||
while (pluginCursor.name != Any::class.java.name) {
|
||||
methods.addAll(listOf(*pluginCursor.declaredMethods))
|
||||
pluginCursor = pluginCursor.superclass
|
||||
}
|
||||
|
||||
for (method in methods) {
|
||||
if (method.isAnnotationPresent(Command::class.java)) {
|
||||
val command = method.getAnnotation(Command::class.java) ?: continue
|
||||
|
||||
@@ -121,7 +121,7 @@ class PluginManager(val activity: AppCompatActivity) {
|
||||
plugins[pluginId]?.invoke(invoke)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
invoke.reject(e.message)
|
||||
invoke.reject(if (e.message?.isEmpty() != false) { e.toString() } else { e.message })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user