gpt4 book ai didi

android - Cordova Plugin 自定义应用类

转载 作者:行者123 更新时间:2023-11-29 15:35:54 25 4
gpt4 key购买 nike

我正在尝试为自定义 sdk 创建一个 cordova 插件。此 sdk 使用蓝牙,有两个选项可供使用。

  1. 应用程序类必须从 sdk 扩展一个类,以便我可以使用 sdk 的所有功能。
  2. 应用程序类必须实现 sdk 中的一个类。这是让蓝牙连接保持有效所必需的。之后我可以手动启动该服务。

我认为我的问题是我必须创建一个自定义应用程序类。

是否可以使用 cordova 插件来实现我所需要的?

最佳答案

你可以在你的插件中这样做:

plugin.xml :

<platform name="android">
<source-file src="src/MyPlugin.java" target-dir="src/my/plugin" />
<source-file src="src/MyApplication.java" target-dir="src/my/plugin" />
</platform>

<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:name="my.plugin.MyApplication" />
</edit-config>

MyApplication.java :

package my.plugin;

import android.app.Application;
import android.util.Log;

public class MyApplication extends Application {
@Override
public void onCreate() {
Log.d("MyApplication", "onCreate");
super.onCreate();
}
}

但是,我发现 <edit-config>当这个插件在一个有很多其他插件的项目中使用时,block 很容易出问题,所以我使用一个钩子(Hook)脚本将 name 属性添加到 <application> 中。 AndroidManifest.xml 中的元素:

plugin.xml , 替换:

<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:name="my.plugin.MyApplication" />
</edit-config>

与:

<hook type="after_prepare" src="hooks/android_app_name.js" />

然后在你的插件目录中创建hooks/android_app_name.js :

#!/usr/bin/env node

var APP_CLASS = 'my.plugin.MyApplication';

module.exports = function(context) {

var fs = context.requireCordovaModule('fs'),
path = context.requireCordovaModule('path');

var platformRoot = path.join(context.opts.projectRoot, 'platforms/android');
var manifestFile = path.join(platformRoot, 'AndroidManifest.xml');

if (fs.existsSync(manifestFile)) {
fs.readFile(manifestFile, 'utf8', function (err, data) {
if (err) {
throw new Error('Unable to find AndroidManifest.xml: ' + err);
}

if (data.indexOf(APP_CLASS) == -1) {
var result = data.replace(/<application/g, '<application android:name="' + APP_CLASS + '"');
fs.writeFile(manifestFile, result, 'utf8', function (err) {
if (err) throw new Error('Unable to write AndroidManifest.xml: ' + err);
})
}
});
}

};

关于android - Cordova Plugin 自定义应用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50399421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com