gpt4 book ai didi

android - 在 Cordova 插件中创建自定义的 android.app.Application

转载 作者:行者123 更新时间:2023-11-29 15:07:09 42 4
gpt4 key购买 nike

我是 Cordova 插件的新手。我想知道是否可以在我的 Android 插件中创建自定义的 android.app.Application?谢谢

最佳答案

可以这样做,但是您需要在 <application> 中添加对应用程序类的名称引用AndroidManifest.xml 的元素.一种方法是使用 after_prepare在每个 Cordova 准备操作之后将其应用于 list 的钩子(Hook)脚本。例如:

plugin.xml

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0" 
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-myplugin"
version="1.0.0">

<name>My Plugin</name>

<platform name="android">

<config-file target="config.xml" parent="/*">
<feature name="MyPlugin" >
<param name="android-package" value="my.package.MyPlugin"/>
</feature>
</config-file>

<js-module name="MyPlugin" src="myplugin.js">
<clobbers target="MyPlugin"/>
</js-module>

<source-file src="MyPlugin.java" target-dir="src/my/package" />
<source-file src="MyApplication.java" target-dir="src/my/package" />

<hook type="after_prepare" src="add_application_name.js" />

</platform>
</plugin>

add_application_name.js

#!/usr/bin/env node

module.exports = function(context) {

var APPLICATION_CLASS = "my.package.MyApplication";

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(APPLICATION_CLASS) == -1) {
var result = data.replace(/<application/g, '<application android:name="' + APPLICATION_CLASS + '"');
fs.writeFile(manifestFile, result, 'utf8', function (err) {
if (err) throw new Error('Unable to write into AndroidManifest.xml: ' + err);
})
}
});
}
};

MyApplication.java

package my.package;

import android.app.Application;

public class MyApplication extends Application
{
public static final String TAG = "MyApplication";

@Override
public void onCreate()
{
Log.d(TAG, "onCreate()");
// DO SOME STUFF
super.onCreate();
}
}

关于android - 在 Cordova 插件中创建自定义的 android.app.Application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051093/

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