Я новичок в плагине Кордовы. Мне интересно, можно ли создать настроенный файл android.app.Application в моем плагине в Android? СпасибоСоздайте индивидуальный андроид.app.Application в плагине Кордовы
0
A
ответ
3
Это можно сделать, но вам нужно добавить ссылку на имя вашего класса приложения в элементе <application>
AndroidManifest.xml
. Один раз сделать это - использовать скрипт крюка after_prepare
, чтобы применить его к манифесту после каждой операции подготовки Кордовы. Например:
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();
}
}
Смежные вопросы
- 1. Создайте индивидуальный UIImagePickerControllerSourceTypePhotoLibrary
- 2. Как установить прослушиватели событий в плагине Кордовы
- 3. WebView Javascript инъекции не работает в плагине Кордовы
- 4. EXC_BAD_ACCESS при использовании того же NSFileHandle объекта в плагине Кордовы
- 5. Создайте новый * пакет * в плагине компилятора Scala
- 6. Создайте пирамиду в плагине bukkit minecraft
- 7. Удалите/создайте индивидуальный стиль с точки зрения в Rails
- 8. Создайте завершенное приложение Кордовы в XCode для развертывания в TestFlight
- 9. Создайте индивидуальный внешний вид элементов для ListView Delphi XE7
- 10. Создайте индивидуальный таймер для активации через несколько минут
- 11. Создайте синтаксис стиля CreateSet в пользовательском плагине градиента
- 12. Ошибка при использовании Кордовы Плагин Google Maps в эмуляторе Android: getMap не указан в плагине GoogleMaps
- 13. Индивидуальный верстак в eclipse
- 14. Индивидуальный Datagridview в C#?
- 15. Индивидуальный WrapMode в DataGridView
- 16. Индивидуальный заказ в SQL
- 17. Индивидуальный Excel в MAC?
- 18. Индивидуальный наведение в TH
- 19. Индивидуальный календарь
- 20. Индивидуальный QFileDialog
- 21. Индивидуальный UINavigationBar
- 22. Миграция Кордовы в Crosswalk
- 23. Увольнение в приложениях Кордовы
- 24. Кордовы недоступен
- 25. Окружения Кордовы
- 26. Изменение размера изображения Кордовы при изменении ориентации
- 27. Плагин Кордовы для связи с библиотекой C
- 28. пакет индивидуальный сигнал в массив
- 29. Индивидуальный заголовок в форме окна
- 30. Индивидуальный дизайн в приложениях IPhone
Спасибо , Я попробую. Другой вопрос. Если можно передать некоторые значения через plugin.xml в мой java-файл, например MyApplication.java? –
Ваш второй вопрос не имеет легкого ответа. Предполагая, что вы хотите использовать значения в 'onCreate()' вашего класса приложения, среда Cordova не была инициализирована на этом этапе, поэтому любой синтаксический анализ XML должен выполняться с Java. plugin.xml не копируется в 'platform/android', поэтому вам нужно создать ссылку, чтобы указать ее как исходный файл, который нужно скопировать в проект платформы. Затем вы можете анализировать и читать значения из этого класса приложений. – DaveAlden
Какая переменная является 'appClass' на вашем крюке? Он выдает ошибку, и, похоже, он не определен в фрагменте кода. – SolveSoul