电容器Android插件由于某种原因无法工作

kpbwa7wx  于 2023-03-06  发布在  Android
关注(0)|答案(2)|浏览(154)

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。有人有任何想法/建议吗?

bwntbbo3

bwntbbo31#

在电容器4中,必须在super.onCreate(savedInstanceState);之前调用registerPlugin(EchoPlugin.class);,而不是之后。
https://capacitorjs.com/docs/updating/4-0#change-registerplugin-order

qyyhg6bp

qyyhg6bp2#

在我的例子中,registerPlugin无法解析我的自定义插件类。
经过几个小时的搜索,我发现我需要手动将@capacitor/android的依赖项添加到客户端ionic项目的package.json的依赖项列表中。
例如:

"dependencies": {
 ...
"@capacitor/android": "~4.7.0",
"@capacitor/app": "4.1.1",
"@capacitor/core": "^4.7.0",
...
}

此外,它还有助于删除. gradle/caches文件夹。

相关问题