MainActivity.java
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerPlugin(EchoPlugin.class);
}
}
EchoPlugin.java
@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);
}
}
echo.plugin.ts
import { registerPlugin } from '@capacitor/core';
export interface EchoPlugin {
echo(options: { value: string }): Promise<{ value: string }>;
}
const EchoPlugin = registerPlugin<EchoPlugin>("Echo");
export default EchoPlugin;
从我的typescript调用echo
方法后,我没有得到任何响应。似乎由于一些奇怪的原因,插件被调用后没有代码运行。我的项目使用电容器v4。有人有任何想法/建议吗?
2条答案
按热度按时间bwntbbo31#
在电容器4中,必须在
super.onCreate(savedInstanceState);
之前调用registerPlugin(EchoPlugin.class);
,而不是之后。https://capacitorjs.com/docs/updating/4-0#change-registerplugin-order
qyyhg6bp2#
在我的例子中,registerPlugin无法解析我的自定义插件类。
经过几个小时的搜索,我发现我需要手动将@capacitor/android的依赖项添加到客户端ionic项目的package.json的依赖项列表中。
例如:
此外,它还有助于删除. gradle/caches文件夹。