Получение широковещательных сообщений (broadcasts) с помощью внешней компоненты для мобильных приложений (ОС Андроид)

Программирование - Внешние компоненты

Оповещения Broadcasts

15
Представлена компонента для получения широковещательных оповещений в ОС Андроид.

Продолжение статьи автора о внешних компонентах для мобильных приложений, в которой представлен развернутый пример компоненты получения широковещательных оповещений в андроиде (broadcasts). Идею ее создания подсказала работа //xn--80appelehcm.xn--p1ai/public/587908/, в которой был предложен универсальный получатель сообщений от сканеров, но решение выполнено через сервис, хотя ничто не мешает оформить его в виде компоненты. Архитектурный выигрыш несомненный, но главные удобства получает пользователь, которому нужно будет установить только приложение 1С без дополнительного ПО.

Для подключения компоненты используем стандартный код:

// Component - имя макета, в котором находится компонента

ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native);
Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");

Так как решение полностью выполнена по стандарту 1С (устройство ввода), установка параметров выполняется методом "УстановитьПараметр", включение и выключение - "Подключить" и "Отключить" соответственно. Параметр, который обязательно нужно установить - "FilterName", это имя оповещения. Для сканеров его необходимо взять из документации. Также можно использовать любые системные броадкасты, например отсюда. В примере конфигурации к статье представлен способ получения информации о батарее устройства. Следующий важный параметр - "CaptureData". В него следует передать XML строку с описанием извлекаемых дополнительных данных оповещения. Для удобства ее можно получить, вызвав метод "ПолучитьШаблонОписанияДанных", который возвращает строку:

<?xml version="1.0" encoding="utf-8"?>
<dataExtra name="%1" arrayToString="%2" dataType="%3" />

Она содержит три параметра в формате %n, чтобы ее было удобно использовать в методе "ПодставитьПараметрыВСтроку" из БСП. Первый параметр - имя дополнительных данных. Второй должен иметь значения true или false и используется только для обработки массива байт или символов (см. ниже). Третий параметр - число, тип извлекаемых данных в соответствии с таблицей:

Значение параметра Тип данных
0 строка
1 массив строк
2 short
3 массив типов short
4 long
5 массив типов long
6 int
7 массив типов int
8 float
9 массив типов float
10 double
11 массив типов double
12 символ
13 массив символов
14 байт
15 массив байтов
16 булево
171617 булевомассив типов булево

Для массивов типов байт или символ параметр attayToString может быть установлен в true. В этом случает при получении дополнительных значений, они будут преобразовываться в строку. Это может пригодится для работы с некоторыми сканерами, которые возвращают результат в виде набора байтов. Покажем код установки параметров перед включением компоненты:

ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();
health = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"health",XMLСтрока(Ложь),XMLСтрока(6));
Компонента.УстановитьПараметр("CaptureData",health);
tech = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"technology",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",tech);
present = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"present",XMLСтрока(Ложь),XMLСтрока(16));
Компонента.УстановитьПараметр("CaptureData",present);
level = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"level",XMLСтрока(Ложь),XMLСтрока(6));
Компонента.УстановитьПараметр("CaptureData",level);

Какие данные необходимо получить мы определяем последовательными вызовами установки параметра CaptureData. Удалить или изменить этот набор после установки невозможно, для этого необходимо пересоздать объект компоненты.

Параметр "Category" позволяет добавить к намерению отбор по категориям. Его также можно устанавливать перед стартом отслеживания броадкастов несколько раз, если требуется отбор по нескольким категориям. Очистка набора категорий возможна только при пересоздании объекта компоненты.

После включения компонента, как и любое устройство ввода, возвращает данные через внешнее событие 1С. Первый параметр события - серийный номер устройства, второй параметр имеет значение "UniversalBroadcastEvent", а третий - текст в формате XML примерно такого вида:

<?xml version="1.0" encoding="utf-8"?>
<MessageData>
<FilterName>Имя оповещения, заданного параметром FilterName</FilterName>
<FilterData name="имя очередного параметра CaptureData">Значение дополнительных данных</FilterData>
<FilterData name="имя очередного параметра CaptureData">
<ArrayValue>элемент 1 массива данных</ArrayValue>
<ArrayValue>элемент 2 массива данных</ArrayValue>
</FilterData>
</MessageData>

Как можно догадаться из примера, значения одиночных дополнительных данных возвращаются в тексте элемента <FilterData>, а массивов элементами <ArrayValue>.

Макет компоненты из конфигурации, прилагаемой, к статье не содержит дополнительных разрешений (permissioms). Если они требуются для получения конкретных оповещений, их можно добавить в архив макета компоненты (включить файл android_manifest_permissions.xml) и собрать приложение.

Конфигурация и внешняя компонента предназначены для работы с релизом мобильной платформы не ниже 8.3.12.64.

15

Скачать файлы

Наименование Файл Версия Размер
Получение широковещательных сообщений (broadcasts) с помощью внешней компоненты для мобильных приложений (ОС Андроид):
.cf 1,38Mb
05.02.18
48
.cf 1.0.4 1,38Mb 48 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. saa@kuzov.org 02.03.18 23:47 Сейчас в теме
Спасибо!
А исходники этой ВК можно увидеть?
2. greyhedgehog 2 17.05.18 12:51 Сейчас в теме
Игорь, спасибо! Очень помогла компонента для работы со встроенным сканером в ТСД Honeywell EDA50K.
10. s.neumyvakin_2015 09.06.18 13:24 Сейчас в теме
(2)Добрый день! Напиши пожалуйста как ты настраивал компоненту. Четвертый день ума не могу дать ТСД Honeywell EDA50K
11. greyhedgehog 2 09.06.18 15:08 Сейчас в теме
(10) Там основные настройки надо на ТСД производить:

в ТСД:
Настройки --> Scan Settings --> Internal Scanner --> Default profile --> Data Processing Settings -->
Поставить галку Scan to Intent. Ткнуть в поле Data Intent (Именно в строку, а не в галку), откроются настройки Data Intent. Там поставить галку Data Intent и в поле Action вбить произвольное уникальное имя действия. Я ввел: "scan.rcv.message" (без кавычек).

Дальше, в конфигурации-примере Игоря, надо немного код изменить с батарейки на ШК:

В конфигурации, в общей форме FormMain можно прям в ПриСозданииНаСервере() прописать ИмяСобытия = "scan.rcv.message"; (этот имя события, которое задал в настройках ТСД, у меня это "scan.rcv.message").
А в процедуре ПриОткрытии() вместо строк с получением состояния батареи прописать поле "data", из которого получать данные:
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcode);
3. greyhedgehog 2 17.05.18 16:41 Сейчас в теме
Поторопился похвалить. На мобильной платформе 8.3.11.61 на указанном выше устройстве (Android 4.4.4) после подключения компоненты (именно после нажатия кнопки "Старт" в форме) даже на чистом примере с определением состояния батареи непредсказуемо начинает жутко тормозить интерфейс или вообще "падает" приложение в течение нескольких десятков секунд. До подключения все работает. Не подскажете, возможно ли это исправить? Очень нужна стабильная работа на устройстве.
Спасибо.
4. IgorKissil 134 17.05.18 22:22 Сейчас в теме
Проверил на указанной платформе и 8-м андроиде - все ОК. Проверить на 4-м сейчас не могу. Но вполне допускаю, что могут быть проблемы. Я до сих пор держу два сборщика мобильных приложений под рукой, один "свежий", другой с платформой 8.3.9, ибо ТСД у одного клиента с 4м андроидом работают только с этой платформой.
5. greyhedgehog 2 17.05.18 23:47 Сейчас в теме
(4) Спасибо. Да, похоже дело в версии Андроида, на телефоне с 6-м работает, а на телефоне с 4-м такое же поведение. К сожалению ТСД на 4-м и ее не обновить, попробую с платформой 8.3.9 поэкспериментировать.
7. IgorKissil 134 29.05.18 07:44 Сейчас в теме
(5) Проверил на эмуляторе 4-го андроида - пример к статье работает. Увы, физических устройств с этой версией у меня нет. На терминале с 5-м адроидом тоже все в порядке.
8. IgorKissil 134 02.06.18 19:47 Сейчас в теме
(5) Обновил пример для новой мобильной платформы
6. IgorKissil 134 18.05.18 08:33 Сейчас в теме
попробуйте собрать под sdk ниже 25
9. greyhedgehog 2 09.06.18 09:38 Сейчас в теме
Спасибо. Обновленная версия примера работает стабильно, по крайней мере на имеющемся у меня телефоне с Android 5.0.1 и на ТСД с Android 7.1.1 проблем больше нет. На ТСД перенастроил компоненту на событие от сканера штрихкода, ШК перехватываются замечательно. Специально проверил на предмет описанных в некоторых статьях пропусков при сканировании ШК, у меня на ТСД не получилось заставить пример пропускать сканирования, даже при очень интенсивной работе, при последовательном сканировании нескольких ШК, все работало.
12. rem2222 11 28.06.18 13:56 Сейчас в теме
Добрый день, помогите пожалуйста. Установил на ТСД с андроид 4.4, интент ловит и батарейки и сканШК, но данных в них нет. Что можно с этим сделать? Прилагаю скан на Андр8 и на 4.4
Прикрепленные файлы:
13. hobi 526 16.07.18 16:52 Сейчас в теме
Отличная компонента, на Honeywell EDA50 работает без проблем !
14. IgorKissil 134 16.07.18 18:11 Сейчас в теме
В версии 1.0.2 исправлена ошибка в компоненте, которая в редких случаях может вызвать утечку памяти
15. hobi 526 18.07.18 16:10 Сейчас в теме
Странное поведение компоненты.
Связь ТСД с компьютером через кабель (ADB.exe, Интернет тоже через кабель)

Сценарий 1:
Добавляю на мобильной платформе мобильное приложение, оно загружается на ТСД, сразу вхожу
пользовательский режим.
ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native)
отрабатывает успешно и впоследствии работает в этом приложении.

Сценарий 2:
После загрузки мобильного приложения на ТСД отключаю кабель, затем вхожу в пользовательский
режим.
ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native)
не отрабатывает ! И впоследствии не запускается.

Сценарии 1 и 2 запускал несколько раз, поведение не меняется, именно такое, как описано.
Такое ощущение, что при первом подключении компонента обращается к внешнему интернет-ресурсу
и начинает затем работать, только если этот ресурс был доступен.

Если доступ к сети интернет перекрыт службой безопасности, то использовать компоненту проблематично (
16. hobi 526 18.07.18 17:50 Сейчас в теме
(15)
Странное поведение компоненты

Такое поведение наблюдается и в собственном приложении и в приложении, загруженном из конфигурации broadcast.cf, размещенной в публикации.
17. IgorKissil 134 18.07.18 21:24 Сейчас в теме
(15) Никаких обращений к внешним ресурсам через интернет компонента не выполняет. Собирайте приложение сборщиком. Но если хотите запускать через платформу, для приложений с внешними компонентами есть нюансы, приложение должно быть опубликовано на сервере отладки и тогда действительно идет обращение в интернет.
18. hobi 526 19.07.18 06:43 Сейчас в теме
(17) Спасибо за ответ. Буду с нюансами бороться.
19. NecroJew 07.08.18 13:19 Сейчас в теме
Добрый день!

Пробовал установить демонстрационное приложение на два устройства (в обоих случаях мобильная платформа 8.3.12.64, согласно вашей рекомендации):
1. ТСД Urovo V5100, Android 4.3
2. Чистый телефон Nexus 5, голый андроид 6.0.1

При выполнении команды Компонента.Подключить() приложение вылетает. На Андроиде 4.3 без отображения информации об ошибке, в 6.0.1 выдает следующий текст:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.addFlags(int)' on a null object reference
at com.iksoftware.unimes.BroadcastMessage$2.run(BroadcastMessage.java:283)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Не подскажете, в чем может быть проблема?
Спасибо.
s.neumyvakin_2015; +1 Ответить
20. s.neumyvakin_2015 08.08.18 08:02 Сейчас в теме
(19) Добрый день!

У меня на ТСД Honeywell тоже самое, хотя на прошлой версии компоненты все работало.
21. IgorKissil 134 08.08.18 08:10 Сейчас в теме
(19) (20) Попробуйте эту версию компоненты, если она рабочая, обновлю пример в статье: https://1drv.ms/u/s!AnW7yKDG1JDfh8J5DM1-VL_mHAdDqg
22. s.neumyvakin_2015 08.08.18 10:25 Сейчас в теме
(21) Добрый день!
К сожалению ошибка осталась:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.addFlags(int)' on a null object reference
at com.iksoftware.unimes.BroadcastMessage$2.run(BroadcastMessage.java:283)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6130)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
NecroJew; +1 Ответить
23. IgorKissil 134 08.08.18 11:13 Сейчас в теме
Тогда все сложнее. Я ошибку воспроизвести не могу, на доступных мне устройствах все работает. В моем коде даже нет такого места Intent.addFlags(int). Максимум что могу, это позже попробовать на эмуляторе nexusa.
24. hobi 526 21.08.18 10:23 Сейчас в теме
Результат в виде XML-строки - это здорово.
Но недавно наткнулся на проблему обработки XML-строки платформой 1С.
Вот XML, полученный при считывании штрихового кода на образце упаковки сигарет:
<?xml version="1.0" encoding="UTF-8"?><MessageData><FilterName>com.android.server.scannerservice.broadcast</FilterName><FilterData name="m3scannerdata">010460026601181721"Nv>vM-91ffd0929ysTNw==24010053940</FilterData><FilterData name="m3scanner_code_type">DataMatrix</FilterData></MessageData>

В этом примере кода последовательность символов & # 2 9 ; при вставке кода в данном сообщении автоматически была заменена на собственно сам спецсимвол. Внешняя компонента возвращает именно представление спецсимвола & # 2 9 ; ( без пробелов, если пробелы убрать, получится  )

Код
	ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.УстановитьСтроку(ТекстXML);
		Пока ЧтениеXML.Прочитать() Цикл
...
	

выбрасывает исключение. Спецсимвол с кодом 29 (представление
& # 2 9 ;
) платформой не обрабатывается.
Приходится вставлять "костыль" СтрЗаменить перед УстановитьСтроку.

Это просто константация факта, особенности обработки XML-представления данных, возвращаемых компонентой.
25. hobi 526 22.08.18 10:28 Сейчас в теме
Вопрос к Автору:
В связи с тем, что в составе данных широковещательного сообщения
может быть строка, содержащая символы, не обрабатываемые
платформой 1С (символ с кодом 29) в том случае, если строка
размещена в XML-формате, можно ли доработать компоненту
следующим образом:
- добавить параметр с типом булево: HexСтрокиВXML или Base64СтрокиВXML.
Чтобы при установке параметра в значение "Истина", компонента
возвращала в XML, в котором строчные значения преобразованы
в Hex или Base64.

Такая доработка позволила бы обойти текущую ошибку платформы 1С -
исключение при вызове ЧтениеXML.Прочитать() , если для ЧтениеXML
установлена строка, содержащая последовательность символов & # 2 9 ;
И, кроме того, для остальных символов с кодом, меньшим 32
(например символ ">") не придется обрабатывать значения строчных полей
СтрЗаменить(Поле, "& g t ;", ">"). Лучше уж один раз обработать и преобразовать
из Hex или Base64 в оригинальную строку.

?

Для иллюстрации проблемы - изображение этикетки на блоке сигарет.
Обработка строки XML, возвращаемой компонентой при чтении
кода DataMatrix с этикетки, вызывает исключение в платформе 1С
( ЧтениеXML.Прочитать() )
Прикрепленные файлы:
26. IgorKissil 134 22.08.18 13:44 Сейчас в теме
(25) Можно. По срокам пока ничего не скажу
27. PaulSharkoff 28.08.18 17:38 Сейчас в теме
Игорь, спасибо. Компонента отлично завелась на Zebra MC3300 (Andriod 7) на мобильном клиенте 8.3.12 для перехвата сообщений от DataWedge
34. user1024947 19.10.18 13:55 Сейчас в теме
(27)Добрый день

Помогите разобраться у нас оборудование почти как у Вас:
сбора данных: Zebra TC-20 на 7 андроиде

При сканирование ШК в обработчике "Внешнее событие" в переменную данные возвращается XML строка которая не содержит Штрих код

В обработчике при открытии barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);
46. user708791_ared2000 02.11.18 12:37 Сейчас в теме
(34) Вам удалось разобраться? У меня Zebra MC40. Тоже событие ловит, а данные пустые. Может поле должно не "data" называться?
48. user1024947 02.11.18 15:54 Сейчас в теме
(46) Да, удалось. Имя переменной для баркода "com.symbol.datawedge.data_string" , для типа баркода "com.symbol.datawedge.label_type".
50. user708791_ared2000 02.11.18 16:14 Сейчас в теме
(48) Ну ничего себе имя... Заработало! Спасибо огромное!
57. adt 16.11.18 11:11 Сейчас в теме
(50) Добрый день, такая же проблема - подскажите, где и как задать имя переменной для для баркода и для типа баркода, никак не могу сообразить.
61. user708791_ared2000 19.11.18 16:15 Сейчас в теме
(57) В обработчике при открытии barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(8));
Компонента.УстановитьПараметр("CaptureData",barcode);

Вот здесь вместо "data" нужно написать то самое длинное имя "com.symbol.datawedge.data_string". Если нужен еще тип кода, то нужно установить еще один параметр и вместо "data" указать "com.symbol.datawedge.label_type".
28. SergeyPodolniy 12.09.18 09:24 Сейчас в теме
Добрый день!
Пытаюсь настроить компоненту на ТСД Zebra MC36, Android 4.4. Данные с батареи ловит, а со сканера - нет. Имя события в 1С прописал такое же, как в настройках сканера. Может ли проблема заключаться в том, что я неверное имя данных указываю в CaptureData? В документации к ТСД этой информации нет, разные варианты перепробовал и пока ничего не получается.
29. SergeyPodolniy 13.09.18 11:19 Сейчас в теме
(28) Нашел причину. Оказалось, что intent формируется с определенной категорией и чтобы его отловить нужно в фильтре эту категорию явно указать. Вопрос к автору, можно ли добавить в настройки компоненты параметр "FilterCategory" по аналогии с "FilterName"?
30. IgorKissil 134 17.09.18 11:31 Сейчас в теме
(29) В релиз 1.0.4 добавил параметр Category
31. Гость 18.09.18 07:40
47. user708791_ared2000 02.11.18 15:44 Сейчас в теме
(29)А какая категория по умолчанию формируется? Или вы в Datawedge категорию указали? У меня тоже событие ловится, а данные не передаются.
32. SenFeron 02.10.18 19:19 Сейчас в теме
Добрый день.
После запуска приложения. Выдается сообщения "Компонента не подключена".
Подскажите пожалуйста, кто то встречался с данной проблемой?
Может кто подсказать как запустить компоненту?

ТСД Honeywell EDA50K
Android 7.1.1
Платформа 8.3.12.67

Пробовал сначала все выполнить по комментарию greyhedgehog (номер комментария - 11)

Потом поставил оригинальный из темы Cf , проблема осталась.
43. menen 25.10.18 09:33 Сейчас в теме
(32) Вопрос не решили? Также не подключается ни на ТСД (PL-40 Android 7), ни на планшете (Huawei Andr 7) ...
33. user1024947 19.10.18 13:37 Сейчас в теме
Добрый день

Подскажите пожалуйста что сделать.
Наше оборудование Терминал сбора данных: Zebra TC-20 android ver 7.1

В обработчике по открытии
Добавлено
barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных,"data",XMLСтрока(Ложь),XMLСтрока(0));
Компонента.УстановитьПараметр("CaptureData",barcode);

При сканирование ШК в обработчике "Внешнее событие" в переменную данные возвращается XML строка которая не содержит Штрих код
35. menen 25.10.18 07:05 Сейчас в теме
Здравствуйте!
Игорь, пытаемся опубликовать скаченную конфигурацию (платформа 8.3.12.1685 32x в 64 WinОС) для проверки на ТСД - не получается - выдается ошибка следующего содержания:

"Ошибка разбора манифеста внешней компоненты Component: отсутствует обязательный атрибут name"

В чем может быть проблема?
36. IgorKissil 134 25.10.18 07:30 Сейчас в теме
(35) Я думаю, Вы пытаетесь собрать приложение на Windows 64? Взял cf из статьи и пересобрал сборщиком в Win10 64bit - все ОК.
41. menen 25.10.18 08:18 Сейчас в теме
(36) Платформа 1С 8.3.12 развернута на ноуте 64 Windows 7. Это как-то влияет?
42. menen 25.10.18 09:03 Сейчас в теме
(41) Развернул 1С на Win10 ошибка ушла.
Однако как и у (32) - компонента на ТСД НЕ подключается.

ТСД PL-40L (Caribe)
Android 7.0
Платформа 8.3.12.67
37. IgorKissil 134 25.10.18 07:33 Сейчас в теме
(35) Как Вы ее пытаетесь публиковать? На http сервере? Разобраться как это делать для приложений с компонентами у меня не хватило времени/терпения. Я все делаю через adb install
38. menen 25.10.18 07:57 Сейчас в теме
Из конфигуратора - Публикация мобильного приложения - на Веб-сервере (Apache 2.2)
39. menen 25.10.18 08:00 Сейчас в теме
(37) Игорь, пока планировали работать на мобильной платформе без сборки
40. menen 25.10.18 08:08 Сейчас в теме
(39) даже при записи конфигурации мобильного приложения в файл (для сборщика) выходит это сообщение
62. АлександрЯрославичъ 23.11.18 11:45 Сейчас в теме
(35)
Платформа 8.3.12.1685
"Ошибка разбора манифеста внешней компоненты бла-бла..."
Такая ошибка вываливается почти на каждой компоненте.

В проблемных манифестах добавлял атрибут
<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle" name="com_1c_MobileBarcodeScanner">
  <component os="Android" path="libcom_1c_MobileBarcodeScanner_i386_1_0_3_2.so" codeType="c++" type="native" arch="i386" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="com_1c_MobileBarcodeScanner_1_0_3_2.apk" codeType="java" type="native" arch="i386" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="libcom_1c_MobileBarcodeScanner_ARM_1_0_3_2.so" codeType="c++" type="native" arch="ARM" name="com_1c_MobileBarcodeScanner"/>
  <component os="Android" path="com_1c_MobileBarcodeScanner_1_0_3_2.apk" codeType="java" type="native" arch="ARM" name="com_1c_MobileBarcodeScanner"/>  
</bundle>


По аналогии, как в комментарии (56)
44. Rokstedi 17 31.10.18 18:03 Сейчас в теме
Не срабатывает внешнее событие, хотя компонента подключается. Подскажите, приложение обязательно нужно собирать или можно опубликовать и подключиться с мобильной платформы?
45. Rokstedi 17 01.11.18 11:57 Сейчас в теме
(44)Все разобрался. Собрал приложение, заменил по инструкции интент фильтр и сообщения начали приходить.
49. user708791_ared2000 02.11.18 15:59 Сейчас в теме
Здравствуйте! ТСД Motorola MC40 на андоиде 5.1.1. На нем работа идет через Datawedge. Событие ловится, но в данные ничего не возвращает. А для батарейки все норм передает. Может ему имя поля "data" не подходит для этого ТСД? Подскажите в чем может быть причина.
51. user708791_ared2000 02.11.18 16:49 Сейчас в теме
(49) Разобрался с помощью(46)
Да, удалось. Имя переменной для баркода "com.symbol.datawedge.data_string" , для типа баркода "com.symbol.datawedge.label_type".
52. hobi 526 02.11.18 17:14 Сейчас в теме
Добрый день.
На платформе 1С:Предприятие 8.3.12.1685 перестала работать загрузка мобильного приложения через сервер.
Сообщение при попытке публикации мобильного приложения.
Ошибка разбора манифеста внешней компоненты Component: отсутствует обязательный атрибут
name

На предыдущих версиях 8.3.12 публикация завершается нормально.
53. user708791_ared2000 02.11.18 18:49 Сейчас в теме
(52)Это наверное не через сервер, а если в конфигураторе по пути Конфигурация/Мобильноеприложение/Опубликовать . У меня тоже такая ошибка в этом случае. Но на web-сервере все публикуется без ошибок
54. hobi 526 09.11.18 09:47 Сейчас в теме
Манифест изменил, всё заработало.
АлександрЯрославичъ; +1 Ответить
55. kosten 67 14.11.18 10:53 Сейчас в теме
(54) Здравствуйте. Подскажите что необходимо изменить в манифесте, чтобы исправить ошибку "Ошибка разбора манифеста внешней компоненты Component: отсутствует обязательный атрибут name"?
56. hobi 526 15.11.18 16:59 Сейчас в теме
Это вариант у меня заработал:

<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle" name="com_iksoftware_unimes">
  <component os="Android" path="libcom_iksoftware_unimes_ARM.so" codeType="c++" type="native" arch="ARM" name="com_iksoftware_unimes"/>
  <component os="Android" path="unimes.apk" codeType="java" type="native" arch="ARM" name="com_iksoftware_unimes"/>
  <component os="Android" path="libcom_iksoftware_unimes_x86.so" codeType="c++" type="native" arch="i386" name="com_iksoftware_unimes"/>
  <component os="Android" path="unimes.apk" codeType="java" type="native" arch="i386" name="com_iksoftware_unimes"/>
</bundle>
АлександрЯрославичъ; +1 Ответить
58. adt 16.11.18 15:53 Сейчас в теме
Здравствуйте.
ТСД symbol mc32n0, Андроид 4.1.1
события приходят, но доп поля, указанные в параметрах CaptureData - в XML отсутствуют.
Тот же пример прогнал на телефоне с Андроид 5.1 - все пришло с параметрами.
Получается, что дело в версии андроида? У кого-нибудь заработало на 4.1.1?
59. IgorKissil 134 16.11.18 17:14 Сейчас в теме
(58) Думаю это потому что компонента собрана для андроида начиная с 19й версии (4.4). Будет время сделаю ребилд с 16-й.
60. Xershi 415 16.11.18 18:08 Сейчас в теме
Добрый день!
Подскажите материалы как самому написать компоненту для андроида?
Вот в этой теме изучаю вопрос:
https://forum.infostart.ru/forum15/topic202825/
63. hobi 526 03.12.18 11:28 Сейчас в теме
Добрый день.
Можно ли каким-то образом использовать сборку из нескольких конфигураций, в каждую из которых встроена компонента сканирования ?
Пока только с одной конфигурацией в сборке заработало...
Оставьте свое сообщение