This commit is contained in:
2026-01-19 09:36:39 +08:00
3 changed files with 42 additions and 11 deletions

View File

@@ -1,2 +1,25 @@
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-shuto-api" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android"><name>ShutoApi</name><js-module name="ShutoApi" src="www/ShutoApi.js"><clobbers target="cordova.plugins.ShutoApi" /></js-module><platform name="android"><config-file parent="/*" target="res/xml/config.xml"><feature name="ShutoApi"><param name="android-package" value="com.shuto.feishuapi.ShutoApi" /></feature></config-file><config-file parent="/*" target="AndroidManifest.xml" /><source-file src="src/android/ShutoApi.java" target-dir="src/com/shuto/feishuapi/ShutoApi" /></platform><platform name="ios"><config-file parent="/*" target="config.xml"><feature name="ShutoApi"><param name="ios-package" value="ShutoApi" /></feature></config-file><source-file src="src/ios/ShutoApi.m" /></platform></plugin>
<plugin id="cordova-shuto-api" version="1.0.0"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>ShutoApi</name>
<js-module name="ShutoApi" src="www/ShutoApi.js">
<clobbers target="cordova.plugins.ShutoApi" />
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="ShutoApi">
<param name="android-package" value="cn.shuto.feishuapi.ShutoApi" />
</feature>
</config-file>
<source-file src="src/android/ShutoApi.java" target-dir="src/cn/shuto/feishuapi" />
</platform>
<platform name="ios">
<config-file parent="/*" target="config.xml">
<feature name="ShutoApi">
<param name="ios-package" value="ShutoApi" />
</feature>
</config-file>
<source-file src="src/ios/ShutoApi.m" />
</platform>
</plugin>

View File

@@ -1,8 +1,11 @@
package com.shuto.feishuapi;
package cn.shuto.feishuapi;
import android.view.View;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.PluginResult;
import org.apache.cordova.LOG;
import org.json.JSONArray;
import org.json.JSONException;
@@ -12,6 +15,7 @@ import org.json.JSONObject;
* This class implements a Cordova plugin for Shuto API.
*/
public class ShutoApi extends CordovaPlugin {
private static final String TAG = "ShutoApi";
// 保存事件回调上下文
private CallbackContext eventCallbackContext;
@@ -28,7 +32,6 @@ public class ShutoApi extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("close")) {
// 修复close方法现在不需要参数
this.close(callbackContext);
return true;
} else if (action.equals("registerEvent")) {
@@ -46,14 +49,20 @@ public class ShutoApi extends CordovaPlugin {
}
private void close(CallbackContext callbackContext) {
// TODO: Implement close method
LOG.d(TAG, "close()");
cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
cordova.getActivity().moveTaskToBack(true);
}
});
callbackContext.success();
}
private void registerEvent(CallbackContext callbackContext) {
// 保存事件回调上下文,以便后续发送事件
this.eventCallbackContext = callbackContext;
// 返回插件结果,但保持回调通道打开
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK);
pluginResult.setKeepCallback(true);
@@ -70,11 +79,11 @@ public class ShutoApi extends CordovaPlugin {
try {
JSONObject data = new JSONObject();
data.put("route", route);
if (parameters != null) {
data.put("params", parameters);
}
fireEvent("navigate", data);
} catch (JSONException e) {
e.printStackTrace();
@@ -86,17 +95,17 @@ public class ShutoApi extends CordovaPlugin {
if (this.eventCallbackContext == null) {
return;
}
try {
// 创建事件数据
JSONObject eventData = new JSONObject();
eventData.put("type", type);
// 添加参数(如果有)
if (parameters != null) {
eventData.put("params", parameters);
}
// 发送事件到前端
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, eventData);
pluginResult.setKeepCallback(true);

View File

@@ -1,5 +1,4 @@
var exec = require('cordova/exec');
var channel = require('cordova/channel');
// 初始化插件对象
var ShutoApi = {