Capacitor Android 插件开发指南
开发 Capacitor Android 插件需要使用 Java 或 Kotlin 与 Android SDK 进行交互。
快速开始
首先按照插件指南中的快速开始部分生成一个插件模板。
接着在 Android Studio 中打开 echo/android/
目录,导航到插件的 .java
文件,具体路径取决于创建插件时设置的 Plugin ID 和 Plugin Class Name。
例如,对于 ID 为 com.domain.echo
、类名为 Echo
的插件,.java
文件位于 android/src/main/java/com/domain/echo/EchoPlugin.java
。
使用 Kotlin
Capacitor 默认使用 Java,但也可以选择使用 Kotlin。
生成插件后,在 Android Studio 中右键点击 Java 插件类,选择"Convert Java file to Kotlin file"选项。Android Studio 会引导你配置项 目以支持 Kotlin。完成后,再次右键点击 Java 类并选择转换选项将其转为 Kotlin 类。
插件基础
Capacitor 的 Android 插件是一个继承 com.getcapacitor.Plugin
的简单 Java 类,并使用 @CapacitorPlugin()
注解标注。其中带有 @PluginMethod()
注解的方法可以从 JavaScript 调用。
生成插件后,你可以通过打开生成器中选择的插件类文件开始编辑。
简单示例
生成的示例中包含一个简单的 echo 插件,其中的 echo
方法会原样返回接收到的值。
这个示例演示了 Capacitor 插件的两个核心组件:从插件调用接收数据,以及将数据返回给调用者。
EchoPlugin.java
package android.plugin.test;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "Echo")
public class EchoPlugin extends Plugin {
@PluginMethod()
public void echo(PluginCall call) {
String value = call.getString("value");
JSObject ret = new JSObject();
ret.put("value", value);
call.resolve(ret);
}
}
访问调用数据
每个插件方法接收一个 com.getcapacitor.PluginCall
实例,包含客户端调用插件方法的所有信息。
客户端可以发送任何可 JSON 序列化的数据,如数字、文本、布尔值、对象和数组。这些数据可以通过 getData
字段或便捷方法如 getString
或 getObject
访问。
例如,获取传递给方法的数据:
@PluginMethod()
public void storeContact(PluginCall call) {
String name = call.getString("yourName", "default name");
JSObject address = call.getObject("address", new JSObject());
boolean isAwesome = call.getBoolean("isAwesome", false);
if (!call.getData().has("id")) {
call.reject("必须提供 id");
return;
}
// ...
call.resolve();
}
注意 PluginCall
实例上访问数据的各种方式,包括如何使用 getData
的 has
方法检查键是否存在。