我希望我的大部分应用程序(列表项,存储,登录,关于屏幕等...)都在cordova中处理,因为在本机工作流程中这样做很痛苦。
但是我有一个特定的活动(我已经创建了),而cordova无法完成(至少不够好和不够快)。我应该如何创建这个程序?
如果对此有更多资料,我很想听听。
提前致谢。
这取决于您创建的活动。
如果您的主要活动是科尔多瓦屏幕,并且将是全屏,并且对科尔多瓦部分的某些操作将启动您的本机活动以执行某个任务,那么您应该使用该插件,使用意图启动您的活动完成后,请关闭它并返回Cordova活动,是否返回一个值。
如果您想将Cordova视图与本机视图混合使用,而全屏视图都不是全屏显示,则应将Cordova嵌入本机项目中。
如果您的活动将成为您的主要活动,那么嵌入Cordova是您的唯一选择。
如您所要求的示例,并且您认为真正的插件不是一个好例子,我将简化插件创建指南
插件需要一个如下所示的plugin.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="your-plugin-id" version="1.0.0">
<name>pluginName</name>
<description>description of the plugin</description>
<license>License of the plugin</license>
<js-module src="www/pluginName.js" name="pluginName">
<clobbers target="pluginName" />
</js-module>
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="PluginName" >
<param name="android-package" value="your.plugin.package.pluginName"/>
</feature>
</config-file>
<source-file src="src/android/PluginName.java" target-dir="your/plugin/package/PluginName" />
</platform>
</plugin>
通过查看它,您可以看到还需要一个带有pluginName.js文件的www文件夹,以及一个带有pluginName.java文件的src / android文件夹。
pluginName.js应该类似于:
function showNativeView() {
cordova.exec(successCallback, errorCallback, "PluginName", "showNativeView", [arguments]);
}
第一个参数是插件完成执行时调用的successCallback函数。第二个参数是如果插件有任何问题时要调用的errorCallback函数。第三个参数是您将调用的Java类的名称,它必须与plugin.xml上的名称相匹配。第四个参数是在Java类中调用的动作第五个是数组或参数(如果要发送任何一个)。要执行它,请单击按钮,或者按需要调用showNativeView()。提醒一下,这过于简化了,正确的做法应该是为插件创建一个名称空间并向其中添加不同的功能,但我想保持其简单性。
最后,PluginName.java应该是这样的:
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("showNativeView".equals(action)) {
Intent yourIntent = new Intent(this.cordova.getActivity().getBaseContext(), YourActivityToLaunch.class);
cordova.getActivity().startActivity(yourIntent);
callbackContext.success();
return true;
}
return false; // Returning false results in a "MethodNotFound" error.
}
这会启动一个简单的意图,该意图不会返回任何内容,如果您的活动返回了某些内容,则必须使用
this.cordova.startActivityForResult(this, yourIntent, REQUEST_CODE);
并添加
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
String result = intent.getStringExtra("WHATEVER_THE_INTENT_RETURNS"),
this.callbackContext.success(result);
}
您在此处调用成功而不是在启动意图后立即执行,然后返回活动返回的值。您还应该检查REQUEST_CODE,使其与用于启动该意图的活动,活动结果等相匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句