Ответ 1
Это зависит от созданной вами активности.
Если основным видом деятельности является экран Кордовы, и он будет полноэкранным, а некоторые действия на части Кордовы запустит вашу собственную деятельность для определенной задачи, тогда вы должны использовать плагин для этого, который запускает вашу деятельность используя намерение, и когда вы закончите с ним, вы закроете его и вернитесь к активности Кордовы, вернув значение или нет.
Если вы хотите смешать представление 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>
Посмотрев на него, вы также увидите, что вам нужна папка www с файлом pluginName.js и папка src/android с файлом pluginName.java на нем.
ПлагинName.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 в соответствии с тем, который вы использовали для запуска намерения, результата активности и т.д.