ionic+vue+capacitor系列笔记--capacitor3.X和2.X+android自定义capacitor的JSbridge插件注册与使用(不同版本注册方式不同,返回值格式也不同,使用方法也不同)
经过我的多番折腾,终于搞明白了这个东西的用法,不同版本的注册方法,使用方法都不一样,现在把这个折腾的结果记录下来,造福大家~
首先编写一个类,然后注册,注意,这个和2.x不一样,2.x的时候我们会使用init的方式去注册
先看2.X的Capacitor
编写一个方法,然后进行注册,注意查看2.X编写方法的代码哦~~
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.NativePlugin;
// 每次做新插件的时候需要继承Plugin 然后添加装饰器 @CapacitorPlugin
@NativePlugin(name = "MyPlugin",permissions = {})
public class MyPlugin extends Plugin {
/**
* 插件初始化
* https://capacitorjs.com/docs/plugins/android#running-code-on-plugin-load
*/
@Override
public void load() {
Log.wtf("MyPlugin" + getClass().getSimpleName(), "MyPluginPlugin init");
}
@PluginMethod()
public void getName(PluginCall call) {
String value = call.getString("value");
String result = "";
JSObject ret = new JSObject();
try {
result = authenticate.getStaffName();
ret.put("result", result);
} catch (Exception exception) {
call.error(exception.getLocalizedMessage());
}
call.success(ret);
}
}

2.x注册方式
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
add(MyPlugin.class);
}});
}
}

2.X代码调用方式
import { Plugins } from '@capacitor/core';
const {
MyPlugin,
Network,
Modals,
Browser,
App,
Toast,
Storage,
SplashScreen,
Device,
} = Plugins;
SplashScreen.show({
showDuration: 2000,
autoHide: true,
});
const offlineHandler = async (status) => {
if (!status.connected) {
await Modals.alert({
title: 'Offline',
message: 'Please check your network connection',
});
}
};
Network.addListener('networkStatusChange', offlineHandler);
const name = await MyPlugin.getName(); // 把这个放在async里就行了哦~~
3.X的Capacitor
编写一个方法,然后进行注册,3.X编写方法的代码和2.X是不一样的哦~~
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
// 每次做新插件的时候需要继承Plugin 然后添加装饰器 @CapacitorPlugin
@CapacitorPlugin(name = "MyPlugin",permissions = {})
public class MyPlugin extends Plugin {
/**
* 插件初始化
* https://capacitorjs.com/docs/plugins/android#running-code-on-plugin-load
*/
@Override
public void load() {
Log.wtf("MyPlugin" + getClass().getSimpleName(), "MyPluginPlugin init");
}
@PluginMethod()
public void getName(PluginCall call) {
String value = call.getString("value");
String result = "";
JSObject ret = new JSObject();
try {
result = authenticate.getStaffName();
ret.put("result", result);
} catch (Exception exception) {
call.reject(exception.getLocalizedMessage(), null, exception);
}
call.resolve(ret);
}
}

3.x注册方式
public class MainActivity extends BridgeActivity {
public Authenticate authenticate;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerPlugin(MyPlugin.class);
authenticate = new Authenticate(getApplicationContext(), getString(R.string.my_package_name));
}
}

3.x调用方式
// Device Info
import { Device } from "@capacitor/device/dist/esm/index";
async function getDeviceInfo() {
const info = await Device.getInfo();
alertMessage(JSON.stringify(info))
}
async function getBatteryInfo() {
const info = await Device.getBatteryInfo();
alertMessage(JSON.stringify(info))
// showToast(JSON.stringify(info));
}
// 插件测试代码
import { Capacitor } from "@capacitor/core";
console.log("Capacitor", Capacitor);
async function getMyPlugin() {
const a = Capacitor.Plugins.MyPlugin.getName()
console.log("Capacitor-MyPlugin", a);
}
getMyPlugin()
ionic+vue+capacitor系列笔记--capacitor3.X和2.X+android自定义capacitor的JSbridge插件注册与使用(不同版本注册方式不同,返回值格式也不同,使用方法也不同)的更多相关文章
- Java系列笔记(5) - 线程
我想关注这个系列博客的粉丝们都应该已经发现了,我一定是个懒虫,在这里向大家道歉了.这个系列的博客是在我工作之余写的,经常几天才写一小节,不过本着宁缺毋滥的精神,所有写的东西都是比较精炼的.这篇文章是本 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- Java系列笔记(2) - Java RTTI和反射机制
目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- Java系列笔记(3) - Java 内存区域和GC机制
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- 跟着鸟哥学Linux系列笔记2-第10章VIM学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...
- 跟着鸟哥学Linux系列笔记0-如何解决问题
跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1. 在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...
- 跟着鸟哥学Linux系列笔记1
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...
- Java系列笔记(1) - Java 类加载与初始化
目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...
随机推荐
- 1.pytest入门
一.pytest单元测试框架 概念:单元测试是指在软件开发中,针对软件的最小单位(函数.方法等)进行正确性的检查测试 单元测试框架是自动化测试框架中的组成部分之一 ...
- Https Webservice接口的免证书调用
目录 前言 思路 方案 Axis调用 HttpClient调用 参考链接 前言 在调用https协议的Webservice接口时,如果没有做证书验证,一般会报javax.net.ssl.SSLHand ...
- Ajax基础(上)
当我们在浏览器地址栏中输入一个网址,或者通过网页表单向服务器提交内容的时候,我们就开始与服务器进行交互. 传统的Web应用交互: (1)用户触发一个Http请求到服务器,服务器对其进行处理后再返回一个 ...
- Vue.js3.0练习题
第一章:Vue 3.0 概述 1.选择题 1.1.在MVVM设计模式中,Model代表的是_______. A. 数据模型 B. 控制器 C. 视图 D.监听模型 ...
- Go实现常用软件设计模式一:单例模式
目录: 举个栗子 概念介绍 使用场景 1.举个栗子 类图 plantuml ``` @startuml'https://plantuml.com/class-diagramclass Elephant ...
- sqlserver数据库还原
这里是从A服务器备份的数据库文件,还原到本地B电脑的数据库.因数据库版本相同,故而未曾出现其他版本问题 1.有个bak的备份文件 2.在B电脑新建一个数据库test. 3.设置test数据库的访问限制 ...
- 理解MySQL事务
事务是什么 百度百科是这么定义的: 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元.在关系数据库中,一个事务可以是一条 ...
- Fastjsonfan反序列化(1)
前言 之前只是对FastJson漏洞有简单的一个认知,虽然由于网上fastjson漏洞调试的文章很多,但是真正有着自己的理解并能清楚的讲述出来的文章少之又少.大多文章都是对已知的漏洞调用流程做了大量分 ...
- 【Spring系列】- Spring循环依赖
Spring循环依赖 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目录 Spring循 ...
- 详记apache-poi的使用,将word,excel,ppt转换为html
原文:https://blog.51cto.com/yunyaniu/5210961 java:Java的jar包之POI的简介.安装.使用方法(基于POI的转换-Word.Excel.Ppt等转ht ...