Запуск приложения мобильного устройства - что это?

08.10.14

Разработка - Мобильная разработка

В этой статье я попробую ответить на этот вопрос. А также посмотрим, как сканировать камерой, как отправлять почту и как делать фото (или видео и в любом качестве), причем не встроенными средствами 1С.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Пушы и тосты для тестов
.apk 53,08Kb
49 2 500 руб. Купить
Исходники (клиента и сервиса)
.zip 4,19Mb
77 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Добрый день.

Наконец у меня дошли руки до разбора нового функционала по мобильной платформе.

В частности, как вы поняли из заголовка статьи – речь пойдет о таком новом объекте, как ЗапускПриложенияМобильногоУстройства.

К сожалению, я не смогу в статье поделиться абсолютно всеми вещами, и добиться понимания читателем всей информации, так как тут будет слишком много специфики по Андроиду.

Но в любом случае попробую донести основную идею.

Итак, что это за такой интересный объект, вокруг которого крутится столько вопросов в инете, и нет ответов, а только догадки.

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

Например, вы можете открыть почту и передать в нее все нужные данные.

Давайте начнем с чего-то малого, но не менее интересного. К примеру – попробуем просканировать штрих-код при помощи камеры телефона, но не средствами 1С, а вызовем специальную программу.

Для этого необходимо установить на телефон программу вот эту.

Далее – создаем кнопку в 1С с вот такой функцией:

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.google.zxing.client.android.SCAN";
    Сообщить(НовВз.Запустить(Истина));
    ДляКаждогоСтрИзНовВз.ДополнительныеДанныеЦикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры

Обновляем конфигурацию и нажимаем кнопку. У меня отображается вот такое окно:

Выбираем Сканер штрих-кодов и сканируем что-то, и видим ответ:

 

В ответ мы получили результат работы, тот что «-1», и получили результаты сканирования, а именно – штрих-код и тип штрих-кода.

Ну как? Интересно? Если да, то давайте будем копать глубже.

Тут нам однозначно поможет справка 1С, или не поможет?

ЗапускПриложенияМобильногоУстройства (MobileDeviceApplicationRun)

Свойства:

Данные (Data)
Действие (Action)
ДополнительныеДанные (AdditionalData)
ИмяКласса (ClassName)
Категория (Category)
Приложение (Package)
Тип (Type)

Методы:

Запустить (Run)

Описание:

Предназначен для запуска внешних приложений.
В отличие от метода ЗапуститьПриложение позволяет передать в приложение параметры.
Доступен только на устройствах под управлением операционной системы Android.

Из справки, нам стало понятно, что работает это все только на Андроид, ну в принципе ничего странного.

Идем дальше. У нас есть определенные свойства и есть один метод.

Давайте разберем некоторые свойства:

Данные – это URIссылка, помните, мы ранее уже говорили про это в вот этой статье. Т.е. если мы хотим запустить браузер, тот тут мы передаем адрес страницы.

Действие – тут мы с вами описывали то, что мы хотим от мобильной платформы. В справке 1С очень скромно про это написали. Но мы вернемся чуть позже.

Категория – это уточняющая информация для описания действия. Например, если это приложение может делать много чего, то вы указываете конкретно что вы хотите. Либо можно запустить приложение по умолчанию, если оно назначено.

На основании этих трех данных система будет искать – что бы запустить для нас. Можно и не заполнять некоторые из них, тогда просто будет выдаваться больше программ для работы с нашим действием.

 

Приложение - тут мы можем указать какое именно приложение (его идентификатор) мы хотим использовать для наших действий, например - "com.google.android.gm", в этом случае откроется Gmail.

ИмяКласса - указывается в паре с приложением, выудить его можно при декомпиляции программы в манифесте, ну или в мануале, если есть, в случае Gmail - "com.google.android.gm.ComposeActivityGmail".

Если казать только приложение или только имя класса - ничего не произойдет. Их есть смысл указывать только в том случае, если вы понимаете о чем идет речь :) При этом можно не указывать Категорию.

В версии 8.3.5.79 исправлен баг (№30010918):

Описание:

В мобильной платформе у обьекта ЗапускПриложенияМобильногоУстройства при вызове метода Запустить игнорируется свойство Приложение, если не установлено свойство ИмяКласса.
 

ДополнительныеДанные – это (типо) структура, в которой мы описываем все параметры для передачи нашему приложению. И в ЭТУ ЖЕ структуру возвращается ответ. Тут не стоит забывать про третий параметр, это тип данных, например, в случае работы с фото, или прикрепляя к письму вложения - мы должны указать Uri представление, так как 1С не значет что это такое, то мы указываем путь и третьим параметром указываем тип, например - "Uri".


Тип – тут следует указать MIMEтип, например, для отправки почты вам надо указать "message/rfc822", а если хотите открыть контакт, то должны указать тип контакта, и т.д.

Метод Запустить – на самом деле тут два метода. Если передаете в параметр Истина, то приложение может вернуть некий код своей работы. Вот как в браузере, если страница не найдена – возвращает код ошибки 404. Если же его переключить в режим Ложь, то он будет работать как индикатор успешного выполнения приложения, т.е. вернет Истину, если же была ошибка, то вернет Ложь.


Что же это все за данные и откуда их брать?

Если в двух словах, то программы на Андроиде могут создавать Намерения (Intent) и обрабатывать их.

Т.е., когда программа написана специальным образом, то при установке она создает ассоциации с некоторыми событиями и их обработкой. В 1С есть хороший аналог – Оповестить() и ОбработкаОповещения(), но только в случае 1С – это локально, а в случае Андроид – глобально.

И ясное дело, что должны быть соответствующие инструкции по работе с ними.

Идем на сайт разработчиков и читаем - https://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/Intents.java

Вот это определение доступных режимов. Например, можете попробовать вызвать вот такой экшн (действие) :

"com.google.zxing.client.android.SHARE"

Посмотрите, что будет.

Теперь давайте отправим почту, за основу я взял первую попавшуюся статью:

Первое на что я смотрю:

IntentemailIntent = newIntent(Intent.ACTION_SEND);

Теперь тут надо быть внимательней. Так как вот это Intent.ACTION_SEND сокращение от android.Intent.action.SEND, а 1С не понимает сокращений, так что не попадайтесь на такие детские ошибки.

Поэтому пишет вот так и тестируем.

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="android.Intent.action.SEND"; 
    Сообщить(НовВз.Запустить(Истина));
КонецПроцедуры

В ответ мы получим «0», и ничего не произойдет. Почему? Ну так все же очевидно, видь должно быть написано не:

android.Intent.action.SEND

а:

android.intent.action.SEND

Разве не понятно? J

Меняем регистр букв, и, о чудо – у нас открылась куча приложений, которые могут отработать это событие. Давайте уточним поиск, для этого укажем тип, но не тот, который в статье той, так как количество приложений не уменьшится, а вот такой:

НовВз.Тип="message/rfc822";

Теперь нажав кнопку – у нас откроется значительно меньше приложений.

Ну и можем выбрать Gmail.

Теперь давайте заполним что-то, ну, например, тему и тело письма. В том примере это делается вот так:

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject of email");

emailIntent.putExtra(Intent.EXTRA_TEXT   , "body of email");

А вставить эти данные нам надо в ДополнительныеДанные. А это по сути массив структуры, где есть ключ и значение. И обратите внимание опять на сокращения.

Мы же должны написать вот так:

    НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");  

    НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Текст письма");

В итоге – открыв Gmail, там заполнятся эти поля. Кроме этого, если у вас установлен скайп, то можете попробовать это же выполнить с ним.

Итог

1С дала очень мощный механизм работы с ее продуктом. Это по сути реализация намерений из андроида, и пока, увы, 1С может выступать только как инициатор, но начало положено! Делать можно много чего при помощи этих функций, я указал лишь самые простые вещи, что бы показать суть, показав это вашему андроид программисту, вы сможете сэкономить часы, если не дни нахождения общего языка.

Дополнение

Как же без какого-то бонуса. А в качестве бонуса, я предлагаю вам поэкспериментировать с вот такой вот программкой, которую мой товарищ накатал за два часа. Делает она следующее – выводит сообщение, или делает пуш сообщение.

При чем в отличии от вот этой утилиты, которую мы написали ранее, когда еще не было этих функций в 1С, вам не надо запускать никакие сервисы, и вообще этой утилиты видно не будет, только в приложениях, так как она не имеет интерфейса.

Работать с ней вот так:

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.ditrix.ownaction.SHOW_TOAST"
    НовВз.ДополнительныеДанные.Добавить("com.ditrix.ownaction.EXTRAS_MESSAGE","Данные");

    Сообщить(НовВз.Запустить(Истина));

    Для Каждого Стр ИзНовВз.ДополнительныеДанные Цикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры

Это для простого сообщения, а вот это действие для пуша:

"com.ditrix.ownaction.SHOW_NOTIFICATION"

При этом вам вернется ответ в виде 3 данных разных типов.

Удачи!

 

Фабрика знаний

Тут будут писаться примеры реализации тех или иных механизмов.


Как сделать фото (видео) в любом качестве?


Учтите - работает не везде, зависит от приложения, при помощи которого делается фото. У меня на Cyan прошивке - все отрабатывало нормально.

    //Тут указываем путь, при чем путь должен быть доступен всем программам, так что временные файлы 1С не подйут
    ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.bmp";
    НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");

    //Обязательно указываем этот параметр, если его не указать, тогда вам вернется привью файла в низком качестве и находится он будет в параметрах с ключем data.
    НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");

    //Если фото не сделано, то ответ будет "0"
    Если НовВз.Запустить(Истина)  0 Тогда

    //ну а тут уже готовое фото, так что все что хотим, то и делаем.
        ЗапуститьПриложение(ФайлКартинки);
    Иначе
        Сообщить("Фото не сделано!");
    КонецЕсли;

Как отправить файл в разные программы? Спасибо Снежане

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "mailto:test@test.ru";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/emulated/0/Снежана/CDAInfo.txt","Uri");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Теекст-текст-текст");
НовВз.Запустить(Истина);

Как отправить файл только по почте? Спасибо Снежане

Должен быть установлен клиент Gmail

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.SEND";
НовВз.Данные = "test@test.ru";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/sdcard0/DCIM/Camera/20140829_115820.jpg","Uri");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Теекст-текст-текст");
НовВз.Тип = "text/plain";
//чтобы сразу Gmail открывался
НовВз.Приложение = "com.google.android.gm";
НовВз.ИмяКласса = "com.google.android.gm.ComposeActivityGmail";
//
НовВз.Запустить(Истина);

Пример работы с Viber'ом. Спасибо Снежане

//Открывает вайбер 
НовВз.Действие = "com.viber.voip.action.CONVERSATION";
//или
НовВз.Действие = "com.viber.voip.action.MESSAGES";


//Открывает список контактов в вайбере
НовВз.Действие = "android.intent.action.CALL_BUTTON";


//открывает диалог с конкретным человеком в вайбере
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "smsto:+380965336452";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.SystemDialogActivityPublic";
//Отправить текст по вайберу, предлагает выбрать, кому отправлять, потом сразу отправляет
НовВз.Действие = "android.intent.action.SEND";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity"; 
НовВз.Тип = "text/plain";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","ТЕКСТ: Теекст-текст-текст");


//Отправить фото по вайберу, предлагает выбрать, кому отправлять
НовВз.Действие = "android.intent.action.SEND";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity"; 
НовВз.Тип = "image/jpeg";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.STREAM","file:///storage/emulated/0/DCIM/100ANDRO/DSC_0001.jpg","Uri");
//Открыть контакт в вайбере
НовВз.Действие = "android.intent.action.VIEW";
НовВз.Данные = "tel:+380965336452";
НовВз.Приложение = "com.viber.voip"; 
НовВз.ИмяКласса = "com.viber.voip.WelcomeShareActivity";

Еще можно открыть контакты устройства и выбрать конкретный контакт, но вот проблема в том, что получаем в итоге Uri-ссылку на контакт, а 1С с ней ничего сделать не может... а хотелось бы данные вытянуть.

Написали в пожелания создание Локального ключа контакта на основании Uri-ссылки.

Спасибо Снежане

// Выбор контакта
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.intent.action.PICK";
Запуск.Тип = "vnd.android.cursor.dir/contact";
Запуск.Запустить(Истина);
Строка = Запуск.Данные;
//Открытие по ссылке
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.intent.action.VIEW";
Запуск.Данные = Строка;
Запуск.Запустить(Истина);

Как правильно указывать путь к файлам? Спасибо Вадиму

Когда мы сохраняем файл средствами моб платформы через

КаталогВременныхФайлов() + "sticker.pdf"


То этот файл недоступен другим приложениям. Можно писать так:

"file:///sdcard/sticker.pdf"


но теоретически карты памяти может и не быть. Поэтому есть более методически правильный метод:

КаталогДокументов() + "sticker.pdf";

Как выбрать файл нужного типа, при помощи менеджера файлов?

Обратите внимание на то, что у вас должен вернуться именно путь к файлу.
Он может быть или в виде content или в виде file, тогда все норм. Однако, если вернется провайдер, например, content://com.android.providers.media.documents/.... то это фигня.
1С с таким работать не сможет. Все зависит от прогаммы, при помощи которой делается выбор. К примеру - если использовать графу "Недавние", то может вернуться провайдет.
Вообщем экспериментировать надо.

 

НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.GET_CONTENT";
//Указываем тип искомых файлов, нас интересует только фото
НовВз.Тип = "image/*"; //"file/*"; //"*/*"
//Говорим что интересуют только локальные данные, а не облачные
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
	Сообщить("Файл не выбран!");
	Возврат
КонецЕсли;
ПутьКФайлу = НовВз.Данные;

Как обрезать выбранное фото?

 

НовВз = Новый ЗапускПриложенияМобильногоУстройства("com.android.camera.action.CROP", ПутьКФайлу);		
НовВз.Тип = "image/*";
НовВз.ДополнительныеДанные.Добавить("return-data", true);
		
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
	Сообщить("Фото не обработано!");
	Возврат
КонецЕсли;

ФайлВр = ПолучитьИмяВременногоФайла("jpg"); 
НовВз.ДополнительныеДанные.Получить("data").Значение.Записать(ФайлВр); // тут и будет сама картинка, которую можно запихнуть в 1С
ЗапуститьПриложение(ФайлВр);



Вступайте в нашу телеграмм-группу Инфостарт

ЗапускПриложенияМобильногоУстройства 1с Android

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

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

3050 руб.

03.12.2018    72952    250    108    

191

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически. Решение предназначено для считывания штрихкодов, а не для их создания и печати.

3050 руб.

22.04.2019    124969    739    207    

391

Мобильная разработка Бесплатно (free)

Android-клиент: конструктор и выполнение запросов 1С по HTTP к опубликованной базе. Часть экосистемы КонфигРедактор.

06.10.2026    1922    54    aleksandrboldyusov    0    

30

Мобильная разработка Разработчик 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Эта подключаемая обработка для любой конфигурации 1С, позволяет отправить любой объект (и рекуррентно связанные с ним объекты) на устройства c NodaLogic, где они будут полнофункциональны и доступны офлайн, по ним можно вести переписку как со стороны чата в NodaLogic, так и со стороны 1С, заполнять данные и загрузить в 1С по мере надобности. Т.е. обработка содержит генератор UI/UX интерфейса NodaLogic и создает объекты для обмена. При этом не надо ни разбираться в NodaLogic вообще, ни иметь базу/сервер/решение на стороне NL – только учетка и мобильное устройство, а со стороны 1С достаточно галочками отметить, какие поля должны быть на формах. Все данные хранятся в ХранилищеОбщихНастроек, поэтому никакого расширения не нужно, сервера со стороны 1С для связи с устройствами тоже не нужно. Тестировалось на 1С:Предприятие 8.3 (8.3.27.1326), 1С:Комплексная автоматизация 2 (2.4.8.63)

1 стартмани

12.05.2026    1578    6    informa1555    1    

14

Мобильная разработка Разработчик Бесплатно (free)

Мне нужен был высокопроизводительный язык для фронт-сайда, я его сделал, а потом подумал, а что, если сделать 1С-синтаксис? Вот что из этого вышло. Продолжение статьи https://infostart.ru/1c/articles/2614496/

12.03.2026    2865    informa1555    11    

14

Мобильная разработка Разработчик 1С 8.3 1С:Комплексная автоматизация 2.х 1С:КА Управленческий учет Абонемент ($m)

В этой статье простейший документ - ориентированный пример складского учета на клиент-серверной платформе NodaLogic с автономными мобильными рабочими местами. Это чисто скелетный пример как можно вынести часть учета во внешний контур. И расширение - модуль связи с 1С. Тестировалось на платформе 1С:Предприятие 8.3 (8.3.27.1326), 1С:Комплексная автоматизация 2 (2.4.8.63).

1 стартмани

13.02.2026    4158    informa1555    5    

27

WEB-интеграция Мобильная разработка Разработчик 1С:Предприятие 8 1С:Библиотека стандартных подсистем Россия Бесплатно (free)

Бесплатное приложение для интеграции веб-клиента 1С с Android-устройством. Просто установите, укажите веб-адрес вашей базы 1С - и пользуйтесь привычным интерфейсом с расширенным доступом к функциям устройства: лазерный и имидж-сканер ТСД, сканер штрихкода камерой, GPS, Bluetooth, фотокамера, NFC и многое другое.

05.08.2025    4722    221    OneScan    25    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. flyer 233 16.09.14 12:01 Сейчас в теме
ждем что то аналогичное для ios
adhocprog; +1 – Ответить
2. DitriX 2118 16.09.14 14:05 Сейчас в теме
(1) очень сильно сомневаюсь :)
DanilaDru; +1 – Ответить
134. maxx 1002 24.05.18 13:04 Сейчас в теме
(2) прошло почти 4 года, не в курсе для ios описания такого нет?
172. sokdm 08.04.21 17:20 Сейчас в теме
(134) Есть новости по ios?
173. maksa2005 381 10.07.21 23:47 Сейчас в теме
(172)на iOS только так
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);

ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

ДиалогВыбора.Заголовок = "Выберите файл";

ДиалогВыбора.Показать(Оповещение);
3. infosoft-v 1127 16.09.14 12:42 Сейчас в теме
Добрый день. А такие приёмы требуют прав суперпользователя в устройстве на андроид?
4. DitriX 2118 16.09.14 15:00 Сейчас в теме
(3)Нет, это стандартный механизм.
5. dj_serega 396 16.09.14 16:12 Сейчас в теме
А можно где-то посмотреть общий список команд которые можно выполнить?
7. DitriX 2118 16.09.14 18:08 Сейчас в теме
(5) можно - для этого надо уже понимать основы программирования под андроид. И, увы, почему то далеко не все работает.
Ну вот на офф сайте http://developer.android.com/guide/components/intents-common.html

(6) теперь ждем момента, когда 1с сможет быть сервером броэдкаста, а то посылать она оповещения то может, а вот прослушивать - нет. А как было бы круто :)
Присылаешь линк, как в уф, на товар или накладную - открывается 1с с этим товаром/накладной :)
93. djvu 145 30.09.15 14:40 Сейчас в теме
(7)

Как я понял, запускать можно только активити с параметрами? Сервисы таким образом запускать нельзя?
94. DitriX 2118 30.09.15 17:22 Сейчас в теме
(93) вы вызываете намерение, у сервисов их нет, т.е. вы и активити то не все вызвать можете, а только те, у которых есть фильтр намерений.
95. djvu 145 01.10.15 08:26 Сейчас в теме
(94)
Т.е. для организации двухстороннего обмена с сервисом с использованием интентов нужна активити-прослойка в любом случае :/
Получается и асинхронный режим выпадает?
96. DitriX 2118 02.10.15 11:25 Сейчас в теме
(95) djvu, во всяком случае - на текущий момент, да.
Но как научимся слушать бродкасты...
98. enot_tut 20 18.11.15 10:04 Сейчас в теме
(96) можно конфигурацию скинуть этой статьи
99. DitriX 2118 21.11.15 20:28 Сейчас в теме
(98) enot_tut, держите
Прикрепленные файлы:
OwnAction-debug-unaligned.apk
ActionProject.zip
163. WKBAPKA 216 06.11.19 10:47 Сейчас в теме
(7) эх, еще бы LiveDat-у подключить :)
6. AlX0id 16.09.14 15:30 Сейчас в теме
А я говорил, что интенты добавят :)
8. allegrosoft 56 16.09.14 18:24 Сейчас в теме
С какого релиза все это стало возможно?
9. flyer 233 16.09.14 19:10 Сейчас в теме
110. ISP 06.07.16 13:47 Сейчас в теме
у меня заработал такой вызов камеры android/ Сделано на базе примера, за что спасибо
//Тут указываем путь, при чем путь должен быть доступен всем программам,
		// так что временные файлы 1С не подйут
		
		ФайлКартинки = КаталогДокументов()+"MobileFoto.jpg";
		// без замены слешей не сохраняет нормально
		ФайлКартинки = СтрЗаменить(ФайлКартинки,"\","/");
		// делаем как бы ссылку на файл для андроида
		ФайлКартинки = "file://" + ФайлКартинки; 
		
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
		
		//Обязательно указываем этот параметр, если его не указать,
		// тогда вам вернется привью файла в низком качестве
		// и находится он будет в параметрах с ключем data.
		НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
		
		//Если фото не сделано, то ответ будет "0"
		Рез = НовВз.Запустить(Истина);
		
		// а тут нормально обращение к файлу. Без этого вылетает ошибка, что файл не обнаружен 
		ФайлКартинки = СтрЗаменить(ФайлКартинки,"file://","");
		
		// сохраняем в справочник на смартфоне, для последующей выгрузки
		Фото_СохранитьСнимок(Неопределено,
		Новый ДвоичныеДанные(ФайлКартинки),
		Неопределено,
		Неопределено
		);

&НаСервере
Процедура Фото_СохранитьСнимок(ФотоСсылка,ДвоичныеДанные,РасширениеФайла,ТипСодержимого)
	Если ФотоСсылка = Неопределено Тогда 
		Фото = Справочники.ФотоДляСлужебок.СоздатьЭлемент();
		Фото.Наименование = Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HHmmss'") + "[Нов. фото]";
		Фото.ИмяФото = Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HHmmss'") + ".jpg";
	иначе	
		Фото = ФотоСсылка.ПолучитьОбъект();
	КонецЕсли;
	
	Фото.ДатаФото = ТекущаяДата();
	Фото.РасширениеФото = РасширениеФайла;
	Фото.ТипСодержимогоТекст = ТипСодержимого;
	// для отлаки
	Если ДвоичныеДанные = Неопределено Тогда 
		Фото.ХранилищеФото = Новый ХранилищеЗначения(Неопределено);
	иначе	
		Фото.ХранилищеФото = Новый ХранилищеЗначения(ДвоичныеДанные,Новый СжатиеДанных(9));
	КонецЕсли;
	Фото.ЕстьФото = Истина;	
	Фото.Родитель = Фото_ТекущаяСлужебка;
	Фото.Записать();
КонецПроцедуры
Показать
renmy; akR00b; +2 – Ответить
10. allegrosoft 56 17.09.14 09:33 Сейчас в теме
А можно исходники приложения?))
11. DitriX 2118 17.09.14 14:52 Сейчас в теме
(10) можно все :) Позже обновлю статью и добавлю исходники
12. allegrosoft 56 17.09.14 14:57 Сейчас в теме
13. DitriX 2118 17.09.14 18:16 Сейчас в теме
14. sergei_tekh 84 22.09.14 16:30 Сейчас в теме
В эмуляторе (VMware) метод тоже должен работать? У меня ничего не происходит и никаких ошибок не выдаётся.
15. DitriX 2118 22.09.14 16:47 Сейчас в теме
(14) смотря что вы тестируете.
16. sergei_tekh 84 22.09.14 17:36 Сейчас в теме
(15) попробовал все примеры, что здесь были. Допустим, отправку почты:
&НаКлиенте
Процедура Сообщения(Команда)
	
    НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.SEND"; 
    Сообщить(НовВз.Запустить(ложь));
	
КонецПроцедуры

Метод "Запустить" выдает всегда Ложь (или 0, в зависимости от параметра метода)
18. DitriX 2118 22.09.14 19:03 Сейчас в теме
(16) странно, но боюсь что тут не пдскажу в чем дело, может нет ни одного приложения, которое должно откликнуться.ъ
(17) писали в IDEA
17. allegrosoft 56 22.09.14 18:21 Сейчас в теме
Проект в Eclipce разработан? Что-то не пойму, как -то криво в eclipce открывается.
19. CyberCerber 905 07.10.14 13:24 Сейчас в теме
Спасибо за полезную статью по интересной теме!

Попробовал примеры из статьи. Поставил прогу для штрих-кодов, запустил команду, да, сработало.

Но не работает команда "android.intent.action.SEND". При этом установлен тот же GMail, смотрел в его манифесте, там эта команда в интентах есть. Не знаете, в чем может быть дело?
20. DitriX 2118 07.10.14 15:56 Сейчас в теме
(19) CyberCerber, вы делаете вот так:
Процедура ПроверитьВзаимодействие(Команда)

    НовВз=Новый ЗапускПриложенияМобильногоУстройства();

    НовВз.Действие="android.intent.action.SEND"; 

    Сообщить(НовВз.Запустить(Истина));

КонецПроцедуры
Показать

?
Что вам в ответ приходит?
21. CyberCerber 905 07.10.14 20:54 Сейчас в теме
(20) да, именно так и делаю. В ответ приходит 0. И больше ничего не происходит.
22. DitriX 2118 07.10.14 21:43 Сейчас в теме
(21) CyberCerber, Даже не знаю что ответить. Это стандартная функция андроида.
Давайте тогда уточним все:
1. Версия андроид
2. Версия 1С
3. Название устройство
4. На скольки устройствах тестировали
5. Вы точно именно так писали? С учетом регистров и без своих каких-либо добавлений? На всякий случай скопируйте этот код и проверьте еще раз. Дабы был чистый эксперимент.
23. CyberCerber 905 08.10.14 08:15 Сейчас в теме
(22) по пунктам:
1. Андроид 4.0.4
2. 1С 8.3.5.1146
3. Huawei MediaPad 10 FHD
4. Пока на одном
5. Писал именно так, сто раз перепроверял, копировал из Манифеста.

Конечно, ус-во - китайщина, но разве может железо повлиять на работу этих механизмом. Тем не менее, постараюсь сегодня проверить на других девайсах.
24. CyberCerber 905 08.10.14 10:45 Сейчас в теме
(22) протестил на Samsung Galaxy S3 Android 4.3 - тоже самое

Но у меня получилось по-другому! Добавил строчку из примера НовВз.Тип="message/rfc822";
Открылся выбор Gmail и Bluetooth. Почему так, не можете подсказать? И откуда брать эту инфу о типе?
25. DitriX 2118 08.10.14 13:26 Сейчас в теме
(24) интересует версия мобильной 1С, а не стационарной.
Так как там они немного переделали механизмы. Вообщем попробуйте из новых примеров в конце статьи.
26. CyberCerber 905 10.10.14 09:22 Сейчас в теме
(25) мобильная 8.3.5.74. Это уже старая версия?
О, спасибо за примеры. В общем, понял, что нужно изучать Манифесты приложений.
А никто не пробовал открыть из 1С картинку на редактирование, сделать там какие-то пометки и закрыть, сохранив? Не могу найти удобные редакторы/рисовалки, которые с Интентами работают.
27. mzelensky 53 15.10.14 10:20 Сейчас в теме
Доброго времени суток!

Делаю фотку средствами 1С, сохраняю в базу и привязываю к нужному объекту. По сути встроенным и средствами все работает, но фотографии получаются довольно большие (мне бы хватило разрешения 800*600).

Можно ли это реализовать вашим методом?.
29. DitriX 2118 15.10.14 13:51 Сейчас в теме
(27) а почему нет? Вы вызываете приложения для работы с фото (не 1С), задаете там размеры и фоткаете, в 1С приходит фото.
Если надо обрезать уже сделанное фото - тоже можно.
Пробуйте, а там увидите.

(28) теоретически можно, но такую программу надо самому писать. Врядли вы найдете готовое решение.
28. Широкий 693 15.10.14 10:34 Сейчас в теме
А можно ли сторонними программа вызывать/скрывать клавиатуру?
Я как то копал - пришел к выводу, что нельзя.
Но на всякий случай спрошу - вдруг ошибаюсь.
30. DanilaDru 264 16.10.14 08:08 Сейчас в теме
Коллеги подскажите пожалуйста. В основном по nfc пишут про необходимость перехвата, но 1с этого не умеет. Может встречали приложение, с помощью которого можно было бы перехватить nfc метку? На подобии как автор вызывает стороннее приложение для сканирования штрих-кодов.
31. dj_serega 396 20.10.14 17:49 Сейчас в теме
А как можно запаковать в архив каталог?

Интерактивно делается так: Мои файлы - выбираем файл или каталог - меню - Заархивировать.
32. DitriX 2118 20.10.14 18:28 Сейчас в теме
(31) это вы сейчас о чем?
33. dj_serega 396 21.10.14 13:05 Сейчас в теме
(32)
Собственно проблемы следующие:
1. Хочу с мобильного приложения создать десяток xml-ек. Запаковать в zip. Отправить по почте.

2. Хочу подключиться к ftp, передать туда десяток файлов или если получится запаковать в архив то передать архив.

Ни первое ни второе не работает.

upd: в тонком клиенте файлы на фтп передаются (в т.ч. каталоги создаются). А вот с мобильного лажа ;(
upd2: Код следующий:
СоздатьКаталог("ftp://login:pass@ip/ИмяКаталога/");

Ошибка следующая:
Каталог не знайдено 'ftp://login:pass/ip/ИмяКаталога': Помилка роботи з інтернет: ftp://ipRequest must not be null.

Я уже и / и \ пробовал. Толку ноль. Ошибка одна и та же.
34. DitriX 2118 21.10.14 17:04 Сейчас в теме
(33) dj_serega,
FTPСоединение (FTPConnection)

Описание:

Предназначен для работы с файлами и каталогами на ftp-серверах.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
35. dj_serega 396 22.10.14 15:14 Сейчас в теме
(34) Так вот именно. Что Новый FTPСоединие не работает на мобильном.
Я подключался по пути "СоздатьКаталог("ftp://login:pass@ip/ИмяКаталога/");"
Думал нет объекта но подключиться можно.

А как на счет вызова программы которая запакует несколько файлов?
36. DitriX 2118 22.10.14 17:33 Сейчас в теме
(35) хм, ну продолжайте копать :) Авось чего интересного найдете :)
37. CyberCerber 905 19.11.14 10:36 Сейчас в теме
Не подскажите, а может ли 1С отправлять broadcast команды?
В Манифесте приложения есть секция activity с intent-filter. Вот действия оттуда срабатывают.
А вот отправляю команду, которая находится в секции receiver с intent-filter - ничего не происходит.
Если через adb shell отправляю команду "am broadcast -a <описание.команды>", то все работает.
Получается, 1С этого еще не умеет?
38. DitriX 2118 19.11.14 14:26 Сейчас в теме
(37) не может, только стартануть активити может, и принимать бродкасты - тоже пока не умеет.
39. CyberCerber 905 20.11.14 08:20 Сейчас в теме
(38) ясно, значит, будем надеяться на новую версию платформы...
О, вижу, вы выложили разработку Acode tools! Как я понимаю, через нее можно реализовать и это.
40. arisha_rein 21.11.14 22:42 Сейчас в теме
Подскажите, пожалуйста, почему ХЗ = Новый ХранилищеЗначения(Новый ДвоичныеДанные("file:///sdcard/Download/FotoTestFrom1C.bmp")); вызывает ошибку недопустимое значение параметра 1?
41. DitriX 2118 22.11.14 13:32 Сейчас в теме
(40) потому что:
file:///sdcard/Download/FotoTestFrom1C.bmp - это URI
/sdcard/Download/FotoTestFrom1C.bmp - а это просто путь или path.

uri - Universal resource Identifier.
Эта штука включает в себя:
- схему доступа
- путь к элементу
- идентификатор элемента
т.е. например к записи в БД ты можешь создать uri.
Типичный URI:
jdbc:mysql://localhost/niflheim?useUnicode=true&characterEncoding=utf-8
А path это путь к объекту файловой системы.

Андроид обычно работает с uri, так как он должен понимать - вы указали путь к файлу, или это путь к записи в бд.

Если привести анологию в 1С, то в 1С есть такая фишка, как ссылка на объект.
К примеру:
e1cib/data/Справочник.Пользователи?ref=8259005056c0000811e4723249a21e41 - это путь к элементу справочника, в котором указывается, что это конкретно справочник, и не просто справочник, а вполне определенный справочник, или в андроиде - это URI

С другой стороны:
8259005056c0000811e4723249a21e41 - это просто ID, или в андроиде - path.

Вы если хотите обратиться к элементу, вы не можете просто взять указать ID и получить объект, вам надо указать - что это за объект.

Вот тут тоже самое. Т.е. когда вы делаете запись фото - вы должны указать для андроида uri, тогда он поймет, что это файл и где он лежит.
С другой стороны, когда вы получаете файл из 1С, то 1С уже и сама знает, что работать вы будете только с файлом и все.
Поэтому ей достаточно указать просто путь, а вот уже сама 1С, внутри своей системы - по этому пути получит uri и будет с ним работать.

Надеюсь я понятно объяснил?
Agrozentr; Vedich; +2 – Ответить
42. arisha_rein 22.11.14 15:30 Сейчас в теме
(41) все понятно. Большое спасибо!
43. ignorant 25.11.14 15:40 Сейчас в теме
Автору - огромное спасибо, выдает "нагора" массу полезной информации!
Кандидат в "Фабрику знаний" - вкл / выкл приемник GPS

// GPS On
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
Запуск.Данные 	= "enabled:true";
Запуск.Запустить(Истина);

// GPS Off
Запуск = Новый ЗапускПриложенияМобильногоУстройства();
Запуск.Действие = "android.location.GPS_ENABLED_CHANGEPICK";
Запуск.Данные 	= "enabled:false";
Запуск.Запустить(Истина);
Показать
maikl007; akR00b; mojo.aka; dablack; DitriX; +5 – Ответить
44. gigapevt 26 27.11.14 18:31 Сейчас в теме
А как скрыть экранную клавиатуру после окончания ввода текста (например в своей форме поиска).

Код есть, но как его прикрутить к 1С ?

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
45. DitriX 2118 27.11.14 20:39 Сейчас в теме
(44) без исходников 1с - никак. Во всяком случае - мы не смогли этого добиться.
Еще один из вариантов - своя клавиатура. Вот у нас в ТСД своя клавиатура, и мы ее можем скрывать, открывать и вообще че хотим то и делаем :)
128. mxs89 47 03.11.17 11:50 Сейчас в теме
(45) приветствую. есть какие нибудь изменения касательно скрытия клавиатуры? Если своя клавиатура, имеется в виду скачать какую нибудь клавиатуру с playmarket? например эту
46. ssa 04.02.15 01:05 Сейчас в теме
Большое спасибо за пример с "android.media.action.IMAGE_CAPTURE". Пригодилось.
Но есть проблема с размером картинки. У меня приложение "Камера", которое автоматически вызывается, позволяет установить минимальное разрешение 1 Мпикс. И файл изображения получается большой. Как его можно уменьшить?
47. DitriX 2118 04.02.15 12:36 Сейчас в теме
(46) автоматически вызывается из 1с? Ну так вызовите свое приложение камеры. Я вот это люблю https://play.google.com/store/apps/details?id=fr.xplod.focal&hl=ru
48. ssa 04.02.15 13:24 Сейчас в теме
Спасибо. Но если я установлю еще одно приложение камеры, как указать, чтобы использовалось именно оно? Ведь может быть несколько подобных приложений на моб. устройстве.
49. DitriX 2118 04.02.15 13:53 Сейчас в теме
(48) смотрите вот этот кусок в этой публикации "Как сделать фото (видео) в любом качестве?"
И при запуске - у вас будет вопрос - что выбрать. Выберите камеру и скажете что бы выбиралось всегда по умолчанию.
Либо можно доп параметрами указать конкретное приложение, как это сделать - указано в статье
kingartos; +1 – Ответить
50. ssa 04.02.15 14:11 Сейчас в теме
Понял, спасибо за разъяснение.
51. kingartos 08.02.15 21:17 Сейчас в теме
Всем привет! Никто не пробовал работать с "распознователем речи"? Нашел статейку на эту тему(http://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones) только у меня ничего не выходит (видимо потому что в этом неразбираюсь) может кто то уже пробовал если да до выложите плиз кусочек кода))
167. serg33rus 36 22.07.20 15:44 Сейчас в теме
(51) Самое простое для голосовых команд.
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
		Результат = НовВз.Запустить(Истина);
		Если Результат = 0 Тогда
			Возврат;
		КонецЕсли;
		
		ГолосоваяКоманда= НовВз.ДополнительныеДанные.Получить("query").Значение;
52. solarisman 151 04.03.15 17:10 Сейчас в теме
Подскажите, как сделать таким образом, чтобы при открытии формы курсор сразу вставал на поле, чтобы сканирование выполнялось в поле ввода? Приходится "тапать" на поле, после чего выполнять сканирование.
Нельзя ли, например, поставить стороннюю клавиатуру и вызвать событие "Enter" или "Tab"?
53. DitriX 2118 05.03.15 18:14 Сейчас в теме
(52) баг платформы, увы, эта опция доступно только в 8.3.4.17, во всех остальных - не работает. А вам с какой целью?
54. solarisman 151 07.04.15 20:28 Сейчас в теме
Каким образом можно мобильное приложение развернуть на весь экран? Толком так и не разобрался, но тут написано, что для API 16 и выше работает только метод
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();
Показать


Можно ли этот код выполнить из 1С?
55. DitriX 2118 09.04.15 11:48 Сейчас в теме
(54) не туда копаете, правьте манифест и там указывайте что хотите, только это нарушает лицензию 1с :)
56. solarisman 151 09.04.15 18:01 Сейчас в теме
(55) Было бы все так просто. Правка манифеста - не панацея. Опробовали на разных устройствах, и в зависимости от параметров экрана снизу остается полоса высотой до 100 пикселей. На смартфонах от 3,5 до 4" работает норм. На смарте 5" остается совсем небольшая полоса снизу, почти незаметная, а вот на ТСД - бидапичаль. Причем после закрытия окон в этой полосе отображается шапка окна (глюк?)
В приложении это видно. При правке манифеста единственное, что меняется - скрывается статусбар

Прикрепленные файлы:
57. DitriX 2118 09.04.15 19:37 Сейчас в теме
(56) ну это таки глюк, на партнерке о нем вроде как говорили, а вообще отправьте в 1с инфу, зарегят и исправят.
58. DeniNikitin 40 20.05.15 16:41 Сейчас в теме
Здравствуйте!

Ну а где сама утилита для реализации кода?

Процедура ПроверитьВзаимодействие(Команда)
    НовВз=Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие="com.ditrix.ownaction.SHOW_TOAST"
    НовВз.ДополнительныеДанные.Добавить("com.ditrix.ownaction.EXTRAS_MESSAGE","Данные");

    Сообщить(НовВз.Запустить(Истина));

    Для Каждого Стр ИзНовВз.ДополнительныеДанные Цикл
        Сообщить(Стр.Ключ+" - "+Стр.Значение);
    КонецЦикла;
КонецПроцедуры
Показать


Это для простого сообщения, а вот это действие для пуша:

"com.ditrix.ownaction.SHOW_NOTIFICATION"
При этом вам вернется ответ в виде 3 данных разных типов.
59. DitriX 2118 20.05.15 20:26 Сейчас в теме
(58) во вложении к статье :)
174. AlexBar 51 16.09.21 15:03 Сейчас в теме
(59) Подскажите какие параметры работают с методом com.ditrix.ownaction.SHOW_NOTIFICATION?
И еще: как можно задавать длительность показа toast-сообщения?
60. DeniNikitin 40 21.05.15 17:58 Сейчас в теме
Я не много не понял скачал apk, установил, прописал Ваш код по отправке push и toast, в итоге не получил ни push ни toast сообщений, расскажите как использовать?
61. DeniNikitin 40 21.05.15 18:01 Сейчас в теме
(60) DeniNikitin,
Извиняюсь просмотрел всё работает корректно!
62. DeniNikitin 40 21.05.15 18:07 Сейчас в теме
А никак нельзя иконку и текст "Notification" заменить?
63. DitriX 2118 21.05.15 18:19 Сейчас в теме
(62) увы, это ограничения Андроида, можно выставлять только те иконки, которые находятся в ассетах приложения, т.е. при компиляции.
64. DeniNikitin 40 22.05.15 05:37 Сейчас в теме
(63)
Если я правильно понял скачиваю ваши исходники меняю там иконку компилирую и будет другая иконка?
65. DitriX 2118 22.05.15 12:14 Сейчас в теме
(64) ну если именно заменить, то да, а если добавить еще одну, то надо код дописывать.
66. DeniNikitin 40 26.05.15 12:57 Сейчас в теме
(63)
Подскажи в какой среде разработки написан проект? Какой IDE использовал?
67. DitriX 2118 26.05.15 13:39 Сейчас в теме
(66) не помню, или идея или эклипс
68. DeniNikitin 40 27.05.15 16:44 Сейчас в теме
Здравствуйте!

А есть пример, что сделать с этой штукой:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.GET_CONTENT";
?
69. DeniNikitin 40 27.05.15 17:08 Сейчас в теме
(68) DeniNikitin,
Что возвращает, как вытащить расширение и.т.д.?
70. DeniNikitin 40 27.05.15 17:17 Сейчас в теме
Приношу извинения пример есть:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.GET_CONTENT";
//Указываем тип искомых файлов, нас интересует только фото
НовВз.Тип = "image/*"; //"file/*"; //"*/*"
//Говорим что интересуют только локальные данные, а не облачные
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
РезультатРаботы = НовВз.Запустить(Истина);
Если НЕ РезультатРаботы Тогда
    Сообщить("Файл не выбран!");
    Возврат
КонецЕсли;
ПутьКФайлу = НовВз.Данные;
Показать

Но я понимаю он возвращает uri, а как из него получить двоичные данные? Если можно пример?
71. DitriX 2118 28.05.15 10:06 Сейчас в теме
(70) URI - это путь к файлу, а как из файла вытащить двиочные данные - точно так же как и в стационарной, и читайте камменты, тут был пример с картинкой
72. DeniNikitin 40 28.05.15 11:24 Сейчас в теме
(71)
Если URI - Путь к файлу, тогда должно работать

ДвоичныеДанные = Новый ДвоичныеДанные(НовВз.Данные); 

Но не работает пишет "Недопустимое значение параметра №1"

Попробовал:
	  	Картинка = Новый Картинка(НовВз.Данные);
	  	СтрокаПуть = Картинка.ПолучитьДвоичныеДанные();

Выдаёт Файл не обнаружен "file://content://external/images/media/10466"

В примерах посмотрел с картинкой примера нет, если только не прописывать строкой ФайлКартинки = "file:///sdcard/Download/FotoTestFrom1C.bmp";

Подскажите куда копать?
73. DeniNikitin 40 28.05.15 13:01 Сейчас в теме
(71) И ещё заметил такую вещь, что после выбора картинки мне возвращается строка "content://external/images/media/10466", а по факту в total commander смотрю там файл img_.....jpg? Точно путь возвращается в Данные?
74. DitriX 2118 28.05.15 13:05 Сейчас в теме
(73) верн. Так вы выюираете через последние данные. Хотите так выбирать, тогда надо выпрямить ссылку. Читайте в другой статье про утилиты
75. DeniNikitin 40 28.05.15 13:10 Сейчас в теме
(74)
А ссылку на статью можно?
77. DitriX 2118 28.05.15 15:24 Сейчас в теме
(75)http://infostart.ru/public/310565/
(76) нет. Во всяком случае - я не знаю как это сделать из 1с
76. DeniNikitin 40 28.05.15 13:40 Сейчас в теме
Нашёл пример на яве
if(resultCode==RESULT_OK){
String FilePath = data.getData().getPath();
textFile.setText(FilePath);
}
А ни как нельзя этот getPath() в каких-нибудь свойствах ЗапускПриложенияМобильногоУстройства тоже прикрутить?
78. DeniNikitin 40 28.05.15 16:59 Сейчас в теме
Спасибо! Использовал функцию ПолучитьUriИзContent(Путь) и всё как надо!
79. DeniNikitin 40 28.05.15 17:10 Сейчас в теме
Вопросит по фото из 1С

		ФайлКартинки = "file:///sdcard/DCIM/FotoTestFrom1C.jpg";
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
		НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
		НовВз.Запустить(Истина);


Чтобы он в галерее отображался? А то у меня физически есть а в галереи нету?
80. DitriX 2118 28.05.15 17:48 Сейчас в теме
(79) не понял вопрос, можете уточнить?
81. DeniNikitin 40 28.05.15 20:51 Сейчас в теме
(80)
Смысл в следующем, код работает и файл сохраняет, но при этом захожу в галерею андроида, его там нет! Через total commander - есть! Вы в андроиде больше понимаете, скорей всего есть какой-то параметр, который надо подключить, чтобы в галерее отображался!
82. DitriX 2118 28.05.15 20:56 Сейчас в теме
(81) ну для начала путь укажите верный: file:///sdcard/DCIM/Camera/FotoTestFrom1C.jpg
83. DeniNikitin 40 29.05.15 06:19 Сейчас в теме
(82) Дело не в пути, я галерею открываю и у меня там по папкам фото отображается и в том числе есть папка DCIM, и которые файлы там лежат они отображаются кроме того, что сфотал интентом!
84. DitriX 2118 29.05.15 10:09 Сейчас в теме
(83) очень интересно. Может расширение файла не совпадает с его реальным типом?
Тут я затрудняюсь ответить. У меня галерея подхватывает все. Так что тут скорее всего вопросы именно в вашей галерее.
85. Andrey_R91 23.07.15 15:52 Сейчас в теме
Подскажите, как можно открыть html-файл через браузер? Какой MIME-тип нужно указывать чтобы запустился браузер? Или само название приложения (к примеру "com.google.android.gm")
86. DitriX 2118 23.07.15 16:56 Сейчас в теме
(85) так вы же сами ответили.
берите за пример открытие контакта в вибере
90. enot_tut 20 27.07.15 20:19 Сейчас в теме
(86) помоги пожалуйста
87. zwitter 27.07.15 08:28 Сейчас в теме
79. А диктофон встроенный никто не пробовал запускать?
а то метод СделатьАудиозапись меня не совсем устраивает.
88. zwitter 27.07.15 17:49 Сейчас в теме
НП = Новый ЗапускПриложенияМобильногоУстройства("android.provider.MediaStore.RECORD_SOUND");
89. enot_tut 20 27.07.15 18:45 Сейчас в теме
помогите исправить при загрузке фотографий из телефона фотка не отоброаеться а при добовление с компа все норм
&НаКлиенте
Процедура ДобавитьКартинку(Команда)
ИмяФайла = "";
ПутьФайла = "";
//Вызываем Диалоговое окно и помещаем файл Картинки из локальной файловой системы во временное хранилище
Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина) = Истина Тогда
 
//в строковый реквизит ФОТО нашей формы сохраняем ссылку на Картинку во временном хранилище
Фото = ПутьФайла;
//для создания нового элемента в Справочнике Файлы и записи Картинки в его реквизит Файл
//переходим на сервер с помощью вызова серверной процедуры
УстановитьКартинку();
КонецЕсли; 
//условие ЕСЛИ нужно для того, чтобы если пользователь отказался от выбора файла
//мы не вызывали серверную процедуру УстановитьКартинку()

    #Если МобильноеПриложениеКлиент Тогда
	НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.GET_CONTENT";
//Указываем тип искомых файлов, нас интересует только фото
    НовВз.Тип = "image/*"; //"file/*"; //"*/*"
//Говорим что интересуют только локальные данные, а не облачные
    НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
    РезультатРаботы = НовВз.Запустить(Истина);
    Если НЕ РезультатРаботы Тогда
        Сообщить("Файл не выбран!");
    Возврат
    КонецЕсли;
    ПутьКФайлу = НовВз.Данные;
    Если ПоместитьФайл("что вписать сюда?", , Истина) = Истина Тогда
  Фото = "что вписать сюда?";
УстановитьКартинку();
КонецЕсли; 
    #КонецЕсли
КонецПроцедуры

&НаСервере
Процедура УстановитьКартинку()
//создаем новый элемент в Справочнике Файлы
НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент();
//в реквизит СправочникаФайлы Файл помещаем выбранную ранее Картинку
НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Фото));
Фото = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить());
//записываем новый элемент справочника Файлы
НовыйФайлКартинки.Записать();

//устанавливаем значение реквизита Картинка Справочника Сотрудники
Объект.Картинка = НовыйФайлКартинки.Ссылка;
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//отображение картинки при открытии формы справочника
Фото = ПолучитьНавигационнуюСсылку(Объект.Картинка, "Файл");

//устанавливаем автомасштаб для картинки
Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер;
КонецПроцедуры
Показать
91. DitriX 2118 27.07.15 21:54 Сейчас в теме
(89) я не понял из кода - что он делает, и не понял - в чем проблема.
Напишите внятно :) Вам проблема понятна, а мне нет.

По пунктам.
1. Не отображается где? В самой форме?
2. Какие значения в переменных? Например, какой путь у фото получается. Прочитайте в этой же статье 70 комментарий и ниже.
3. Что значит при добавлении компа? Вы фото синхронизируете? Или что?

Идеальный вариант - дайте просто обработку, в которой четко понятно, что вы хотите сделать, и что не получается.
92. enot_tut 20 27.07.15 23:24 Сейчас в теме
(91) при добавление с компьютера
фотография добавляться на мобильном устройств а также на компьютере,
а при добавление с мобильного устройства фотка не где не отоброжаеться
Прикрепленные файлы:
97. Silmariil 157 04.11.15 13:36 Сейчас в теме
(89) enot_tut, Вопрос хороший, сам сейчас на него сейчас ищу ответ. По сути нет метода в 1С, который бы позволил преобразовывать file в uri и обратно. в самом Android данный метод есть Uri.parse()

Есть обходное решение: вызвать после выбора файла crop, но это лишнее действие + например на sony compact z3 не пашет, на asus пашет.
100. bookmanyak 27.11.15 23:39 Сейчас в теме
Всем доброго времени суток!
Прошу прощения, а как, на подобии описанного в статье примера, сделать массовое (непрерывное) сканирование?
Заранее благодарен.
101. DitriX 2118 28.11.15 13:31 Сейчас в теме
(100) никак :) Ну только если не взять исходники приложения и не дописать это самому.
102. mevgenym 87 21.12.15 15:41 Сейчас в теме
Делал отправку сообщения конткретному контакту в скайп.

ориентировался по ссылкам:
https://msdn.microsoft.com/en-us/library/dn745884.aspx
https://msdn.microsoft.com/en-us/library/dn745882.aspx#chats

Вот так получилость открыть чат с контактом:

НовВз.Действие = "android.intent.action.VIEW";
НовВз.Данные =  "skype:"+ИМЯКОНТАКТА+"?chat";
НовВз.Приложение = "com.skype.raider";
НовВз.ИмяКласса = "com.skype.raider.Main";


Потом, делал так:

НовВз.Действие = "android.intent.action.SEND";
НовВз.Данные =  "skype:"+ИМЯКОНТАКТА+"?chat";
НовВз.Приложение = "com.skype.raider";
НовВз.ИмяКласса = "com.skype.raider.Main";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT", Сообщение);


но попадаю на выбор контактов, хотя после выбора сообщение сразу отправляется.
103. koks17v 10 10.01.16 00:19 Сейчас в теме
(102) mevgenym,
Тоже самое и с вибером.
Кто-нить в курсе - можно эмулировать нажатие кнопки Отправить?
104. dablack 16.01.16 22:35 Сейчас в теме
(103) koks17v, Присоединяюсь к вопросу. Все, что предложила Снежана отлично, но нужна отправка сообщения определенному контакту без выбора.
105. DitriX 2118 20.01.16 12:28 Сейчас в теме
Увы, этого не поддерживают стандартные месенджеры, это своеобразная защита от создания спам ботов. Ну и от вирусов, что бы не было такого, что вы поставили игру, а она потом всем вашим контактам разослала вирусы.
Хотя, неисключенно, что через одно место сделать можно.
106. mulder242 3 31.03.16 14:57 Сейчас в теме
Вопрос, можно ли выбрать контакты для отправки сообщений Viber не из книги контактов, а из запроса к базе ? (рассылка по справочнику контрагенты) ?
107. DitriX 2118 02.04.16 19:22 Сейчас в теме
не думаю, иначе бы все клепали кучу ботов
108. ISP 05.07.16 16:06 Сейчас в теме
Не получается сделать фото через камеру. Смартфон Megafon Login 2

Окно для фотографирования появляется, делаешь снимок. Преходит на следующие окно с крестиком и галкой (в стандартной камере этого экрана нет). Нажимаешь на галку и ничего не происходит.
Будто не получает событие завершения снимка. Но фотографии в галерии видны.
Если нажать на крестик, то выдает ошибку "Файл не обнаружен". Интересно, что пишет "file" 2 раза. Первый раз через "//", а второй "///"

Что означают "///"?.
109. DitriX 2118 05.07.16 23:14 Сейчас в теме
(108) ISP, вы ответили на свой вопрос, значит ваша камера контекст подставляет сама, пробуйте вообще без file://
111. Широкий 693 08.11.16 11:50 Сейчас в теме
Можно ли через "ЗапускПриложенияМобильногоУстройства" снять координаты текущего местоположения (аналогично штатному "СредстваГеопозиционирования")?
112. DitriX 2118 08.11.16 15:22 Сейчас в теме
(111) если найдете приложение, которое их возвращает
113. Serdgio 195 18.11.16 18:18 Сейчас в теме
Дмитрий, а не подскажете, поддерживается ли отправка нескольких файлов через почту или другое приложение? По вот этому родному для андроида примеру https://developer.android.com/training/sharing/send.html#send-multiple-content. У меня не получилось :(
114. DitriX 2118 18.11.16 23:10 Сейчас в теме
(113) Serdgio, нет, 1с не поддерживает масив ури :(
115. Serdgio 195 21.11.16 11:41 Сейчас в теме
(114) DitriX, спасибо за информацию. Не буду тратить время :)
116. DitriX 2118 21.11.16 16:57 Сейчас в теме
(115) ну есть только вариант использовать 1совский механизм отправки почты.
117. Serdgio 195 29.11.16 12:39 Сейчас в теме
Дмитрий, а не сталкивались с задачей определить страну, в которой запускается приложение?
Есть пример на JAVA - под коду оператора
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String countryCode = tm.getSimCountryIso();

Не подскажете, есть ли вариант выполнить этот код в мобильном приложении на 1С?
118. DitriX 2118 29.11.16 16:13 Сейчас в теме
(117) вы таки уверенны что хотите услышать мое решение проблемы? ок
Подключаетесь к сайту, который может опредилить ваш IP, и вернет по нему страну :)
119. Serdgio 195 29.11.16 17:03 Сейчас в теме
Шоб да, так нет :)
А за вариант решения в любом случае благодарю!
120. babybu 30 30.12.16 14:54 Сейчас в теме
Помогите разобраться... Пытаюсь сделать фото по приведенному в статье примеру, но фото нигде не сохраняется, я уже разные пути сохранения пробовал, но всё бесполезно:

ФайлКартинки= "file:///sdcard/DCIM/Camera/"+Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy_HH_mm")+".jpg";
//ФайлКартинки="";
НовВз=Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие="android.media.action.IMAGE_CAPTURE";
НовВз.ДополнительныеДанные.Добавить("OUTPUT",ФайлКартинки,"Uri");
Если НовВз.Запустить(Истина) <> 0 тогда
Сообщить("Сделано фото, помещено в:"+СокрЛП(ФайлКартинки));
Иначе
Сообщить("Фото не сделано!");
КонецЕсли;

Android 6.0 платформа 1c 8.3.6.215. В чем может быть проблема - непонятно мне
121. sergsyp 45 16.08.17 12:25 Сейчас в теме
Коллеги, а как запустить браузер хром?
122. Zahary 42 08.09.17 11:13 Сейчас в теме
Может кому пригодится

Действие = "android.settings.SETTINGS"; // общие настройки
Действие = "android.settings.DATE_SETTINGS"; // настройки даты и времени
Действие = "android.settings.WIFI_SETTINGS"; // настройки Wi-Fi
Действие = "android.settings.DATA_ROAMING_SETTINGS"; //SIM-карты и мобильные сети
Действие = "android.net.vpn.SETTINGS"; // открыть настройки VPN
akR00b; bookmanyak; DitriX; +3 – Ответить
123. lowuser 20.09.17 12:16 Сейчас в теме
У меня почему то не открывает, может что то поменялось в Viber?
//открывает диалог с конкретным человеком в вайбере
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "smsto:+380965336452";
НовВз.Приложение = "com.viber.voip";
НовВз.ИмяКласса = "com.viber.voip.SystemDialogActivityPublic";

Нет ли у кого имени класса для такого же действия в Watsap? Или может подскажете где посмотреть? :)
124. lowuser 20.09.17 13:24 Сейчас в теме
(123)
С Whatsapp получилось:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.Данные = "smsto:" + Параметры.НомерТелефона;
НовВз.Приложение = "com.whatsapp"; 
НовВз.Запустить(ложь);

А вот Viber ни в какую не хочет...
125. flyer 233 20.09.17 13:48 Сейчас в теме
(124) данное действие только открывает приложение? хорошо сразу бы отправлять
126. lowuser 20.09.17 13:52 Сейчас в теме
(125)Оно открывает диалог с указанным контактом
127. VitushVV 5 15.10.17 21:28 Сейчас в теме
Как вы узнали как работать с "Viber"?

Есть ТСД на андройде хочу до сканера достучатца.
129. Davurov 06.12.17 10:41 Сейчас в теме
Можно ли сразу отправить сообщение в Whatsapp используя Intent? Что-нибудь типа такого? (у меня не получилось)

НовВз = Новый ЗапускПриложенияМобильногоУстройства();                         
НовВз.Действие = "android.intent.action.SENDTO";
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT", "Привет из 1С");
НовВз.Тип = "text/plain";
НовВз.Приложение = "com.whatsapp";
НовВз.Данные = "smsto: + "НомерТелефона";
		
НовВз.Запустить(Истина);
130. alex_petrovs 06.02.18 11:00 Сейчас в теме
А как запустить apk файл? т.е. запустить установку какого-либо приложения из файла?
131. koks17v 10 06.02.18 12:49 Сейчас в теме
(130)ЗапуститьПриложение()
132. Seeker 14.02.18 07:21 Сейчас в теме
Добрый день.
Кто нибудь знает как закрыть текущее приложение?
133. just86 25.02.18 22:20 Сейчас в теме
А как можно дать пользователю выбор куда сохранять файл? Путь типа КаталогДокументов() сохраняет в дебри папки 1с. Можно ли как то получить системный путь папки Загрузка? Или дать пользователю выбрать куда сохранять
135. evil_wizard 24.05.18 16:14 Сейчас в теме
Добрый день.
В связи с новыми политиками android конструкция
ДополнительныеДанные.Добавить( "output", файлКартинки, "Uri" )
с использованием URI в результате дает ошибку "... exposed beyond app ..."
По всей видимости вызвано это с необходимостью использовать FileProvider для корректного доступа к общим фалам и папкам.
Подскажите, возможно уже кто то разобрался с этой проблемой?
136. user827704 29.08.18 12:44 Сейчас в теме
А как можно получить текущие координаты?
Добился только открытия карт таким кодом:

НовВз=Новый ЗапускПриложенияМобильногоУстройства();
НовВз.Действие="android.intent.action.VIEW";
Сообщить(НовВз.Запустить(Истина));
138. user1038868 29.08.18 22:08 Сейчас в теме
Добрый день! А у меня Ваш код предлагает "Открыть с помощью приложения:"
Антиспам ; Reader ; Google Ассистент ; TotalCmd(Quee) ; Карты ; PrimeScanner ; WPS Office ; Телефон ; Просмотр мероприятия ; Общие ; Форум MIUI . Другое дело, что все они дальше выдают ошибки, так как дальнейшее взаимодействие не определено , и только "Карты" действительно открываются
137. user1038868 29.08.18 21:37 Сейчас в теме
Уважаемый Дмитрий! У меня не работает подключение Barcode Scanner 4.2.3 в мобильной платформе 1С даже 8.3.11.57.
Пожалуйста, объясните мне в чём моя ошибка, ибо написал такой код:
НовВз.Действие="com.manateeworks.barcodescanners.BARCODESCANNERS";
а он не работает и просто висит...


&НаКлиенте
Процедура BarcodeScanner423(Команда)
    // НЕ РАБОТАЕТ  и где ошибка?
    #Если МобильноеПриложениеКлиент Тогда
        НовВз=Новый ЗапускПриложенияМобильногоУстройства();
        НовВз.Действие="com.manateeworks.barcodescanners.BARCODESCANNERS";
        НовВз.Запустить(Истина);
        Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл
            Сообщить(Стр.Ключ+" -<|>- "+Стр.Значение);
        КонецЦикла;
    #КонецЕсли    
КонецПроцедуры


Процедура СканерШтрихКодов477(Команда)
    // РАБОТАЕТ
    #Если МобильноеПриложениеКлиент Тогда
        НовВз=Новый ЗапускПриложенияМобильногоУстройства();
        НовВз.Действие="com.google.zxing.client.android.SCAN";
        НовВз.Запустить(Истина);
        Для Каждого Стр Из НовВз.ДополнительныеДанные Цикл
            Сообщить(Стр.Ключ+" -<|>- "+Стр.Значение);
        КонецЦикла;
    #КонецЕсли    
КонецПроцедуры
Показать
139. DitriX 2118 29.08.18 22:27 Сейчас в теме
(137) а почему вы решили что оно должно работать? Работать или нет - это зависит от того, как приложение написано. Что у вас в манифесте того приложения написано?
140. user1038868 30.08.18 11:30 Сейчас в теме
А где взять манифест и как его читать? Если являюсь обычным пользователем смартфона, которому понравилась очередная программа сканирования на Play Маркет! И есть непреодолимое желание запустить эту программу из платформы 1С. Помогите.
141. user1038868 30.08.18 22:09 Сейчас в теме
1) А как узнать какое приложение Android поддерживает возврат данных через intent ? 2) А как узнать манифест приложение Android, если его скачиваю с Google Play ? Именно эти знания мне нужны для запуска приложение Android из ЗапускПриложенияМобильногоУстройства() !
142. пользователь 01.09.18 14:28
Сообщение было скрыто модератором.
...
143. user1038868 02.09.18 05:10 Сейчас в теме
Сам отвечу на этот вопрос.Необходимо установить на смартфон App Detective от zmarties с Google Play
https://play.google.com/store/apps/details?id=com.zmarties.detective. Запустить App Detective, выбрать
нужную программу и прочитать её файл AndroidManifest.xml
MonteCriZto; SantiouS; +2 – Ответить
144. lion-killer 23 19.10.18 17:02 Сейчас в теме
Хочу реализовать множественное сканирование. Получится ли у меня с помощью "com.google.zxing.client.android.SCAN"?
158. SantiouS 25.07.19 14:59 Сейчас в теме
(144) Решили данную задачу?
160. SantiouS 25.07.19 16:25 Сейчас в теме
(144) Разобрался как данный функционал реализовать с помощью "Barcode Scanner". Достаточно запуск приложения вложить в цикл в условие выхода из цикла поставить проверку на заполненность результата сканирования приложением. Если оно пустое - то приложение просто вручную закрыли. Надеюсь понятно.
145. BiTwaR 9 12.02.19 14:54 Сейчас в теме
Всем привет!

Большое спасибо автору и комментаторам за статью.

Меня очень интересует как можно открыть камеру, чтобы получить фото без его предварительного просмотра и подтверждения. А чтобы сразу, нажал на кнопку фото и фото ушло в приложение.
Посмотрел, что на Android это реализуют следующим образом:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("android.intent.extra.quickCapture",true);

Но добавление строки:
НовВз.ДополнительныеДанные.Добавить("android.intent.extra.quickCapture", Истина);

ожидаемого результата не дает.
Причем, если делать фото стандартными средствами, то окно фотографирования закрывается само, без подтверждения. Но мне такой вариант не подходит, т.к. использую стороннее приложение.
СредстваМультимедиа.СделатьФотоснимок(ТипКамерыУстройства.Задняя);

Может кто-то решил подобную задачу?
146. hrom 69 06.03.19 05:46 Сейчас в теме
(145) Присоединяюсь к вопросу! Плюс еще бы научится задавать качество фото через интент "MediaStore.ACTION_IMAGE_CAPTURE"

З.Ы.: Стандратная функция 1С "СредстваМультимедиа.СделатьФотоснимок()" на Асусе падает с ошибкой, а на Xiaomi лагает
147. hrom 69 06.03.19 07:20 Сейчас в теме
(145) у меня на андроид 7 сработало НовВз.ДополнительныеДанные.Добавить("android.intent.extra.quickCapture", Истина);
148. sommid 13.03.19 11:58 Сейчас в теме
Может быть подскажете как использовать приведенный вами в примере Barcode Scanner для непрерывного сканирования? аналогично как работает стандартное сканирование 1С: отсканировал - получил в 1С, отсканировал - получил в 1С и т.д., когда все нужное отсканировал - закрыл приложение сканирования и вернулся в форму 1С.
Возможно, нужно какие-то входные параметры передавать перед вызовом приложения..
Само по себе это приложение сканирует шустрее чем 1Сное, но "поштучное" сканирование сводит все на нет (
SantiouS; +1 – Ответить
157. SantiouS 25.07.19 14:59 Сейчас в теме
(148) Разобрались как подобное реализовать?
159. SantiouS 25.07.19 16:25 Сейчас в теме
(148) Разобрался как данный функционал реализовать с помощью "Barcode Scanner". Достаточно запуск приложения вложить в цикл в условие выхода из цикла поставить проверку на заполненность результата сканирования приложением. Если оно пустое - то приложение просто вручную закрыли. Надеюсь понятно.
149. vasiliy_09_05 8 15.03.19 08:50 Сейчас в теме
Доброго времени суток Дамы и Господа.
Требуется Ваша помощь.

Произвожу запись звука встроенными средствами 1С вот таким кодом:
Мультимедиа = СредстваМультимедиа; 
Если Мультимедиа.ПоддерживаетсяАудиозапись() 
	Тогда Результат = Мультимедиа.СделатьАудиозапись(); 
	Иначе Сообщить("Не поддерживается аудио запись!");
КонецЕсли;


Все вроде нормально, звук пишется, записывается в файл, но до тех пор, пока пользователь не свернет приложение. Если свернуть 1С на момент записи, а после развернуть, на экране счетчик времени будет в значении -5 сек и запись прервется.

В сборщике приложений явно указано, что фоновая запись не поддерживается.
Решил перейти на intent'ы, чтобы 1С вызывала намерение записи, передавала параметры, запускала запись, после этого останавливала запись с сохранением файла. Так как будет работать другое ПО, сворачивание 1С по идее не должно вызывать остановку записи.

Проблема в том, что не могу найти способ или описание, как это сделать намерением :(

Вот ссылка на неплохое описание: Диктофон

Но привязать это описание к 1С у меня не получается.

Может быть кто-то уже сталкивался с данным вопросом?
Был бы очень благодарен за помощь! :)
150. koks17v 10 15.03.19 12:56 Сейчас в теме
(149)
Из указанной ссылки в 1С это вот так:

intent = Новый ЗапускПриложенияМобильногоУстройства();
intent.Действие = "MediaStore.Audio.Media.RECORD_SOUND_ACTION";

EXTRA = Новый ДополнительныеДанныеЗапускаПриложенияМобильногоУстройства;
EXTRA.Добавить("RQS_RECORDING", 1);

intent.Запустить(Истина);
151. vasiliy_09_05 8 15.03.19 12:56 Сейчас в теме
С Intent'ами аналогично :(
НП = Новый ЗапускПриложенияМобильногоУстройства("android.provider.MediaStore.RECORD_SOUND");

Запуск нормальный, если свернуть приложение, запись останавливается, не важно, встроенный ли диктофон, или установленный (я, например, использовал com.sonymobile.androidapp.audiorecorder_2.01.41_20141)

То есть при сворачивании окна 1С отрубает "все связи с внешним миром".

Может быть кто нибудь сумел это победить?
152. Al-77 74 18.03.19 21:06 Сейчас в теме
Добрый вечер, не подскажите, как убрать всплывающее приложение после того как сделали фотографию родной камерой, система предлагает программы чем открыть фотографию только что сделаную.
153. Necessitudo 21.03.19 17:16 Сейчас в теме
Дмитрий, а вы случайно не знаете как добавить в интент такое?
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
154. sdv88 87 05.04.19 11:26 Сейчас в теме
А как узнать возможные параметры (android.intent.extra) для приложения?

У меня цель открыть PDF из приложения на определенной странице или метке.

        Запуск = Новый ЗапускПриложенияМобильногоУстройства();
	Запуск.Действие = "android.intent.action.VIEW";
	Запуск.тип = "application/pdf";
	Запуск.Данные = ПутьКФайлу + "#page=4";
	
	Запуск.ДополнительныеДанные.Добавить("android.intent.extra.page",4);
	Запуск.Запустить(Истина);
Показать


попробовал вот так, через выбор нескольких приложений, но без успешно PDF открывается в любом приложении на 1 странице.
155. goofer 29.04.19 14:53 Сейчас в теме
А можно таким способом получить номер телефона?
156. markers 279 25.06.19 10:44 Сейчас в теме
Спасибо за статью! Единственное что хочется добавить:
Как выбрать изображение/фотографию на Android из мобильной 1С:
	ВыборФото = Новый ЗапускПриложенияМобильногоУстройства();
	ВыборФото.Действие = "android.intent.action.PICK";
	//Указываем тип искомых файлов, нас интересует только фото
	ВыборФото.Тип = "image/*"; //"file/*"; //"*/*"
	РезультатРаботы = ВыборФото.Запустить(Истина);
Тогда открывается галерея (или другое подобное приложение) в котором гораздо удобней выбрать фотографию/изображение, нежели интентом указанном в статье (android.intent.action.GET_CONTENT).
MonteCriZto; rise; +2 – Ответить
175. al.gerasimov 21.09.21 08:36 Сейчас в теме
(156) Наверное глупый вопрос: А в каком параметре возвращаются данные (ссылка) на фото?
176. markers 279 21.09.21 09:19 Сейчас в теме
(175)...
Если НЕ РезультатРаботы Тогда
	ПоказатьПредупреждение(, "Фотография не выбрана");
	Возврат
КонецЕсли;

Попытка
	Картинка = Новый Картинка(Новый ДвоичныеДанные(ВыборФото.Данные));
Исключение
	Инфо = ИнформацияОбОшибке();
	ВызватьИсключение "Выбранный файл не является картинкой";
КонецПопытки;
Показать
177. al.gerasimov 21.09.21 20:35 Сейчас в теме
(176) Спасибо громадное за такой развернутый и быстрый ответ.

Есть одна проблема. Фотография приходит в полном разрешении, а у современных телефонов оно может быть громадным. Я попытался его уменьшить, но встроенные в платформу средства, судя по справке не доступны, пытаюсь решить средствами Андроид.
Написал вот тваой код:
		
CropApp = New MobileDeviceApplicationRun("com.android.camera.action.CROP");
CropApp.Data = FileName;
CropApp.Type = "image/*";
CropApp.AdditionalData.Add("scale", "true");
		
CropApp.AdditionalData.Add("aspectX", 1);
CropApp.AdditionalData.Add("aspectY", 1);           
CropApp.AdditionalData.Add("outputX", 128);
CropApp.AdditionalData.Add("outputY", 128);           
CropApp.AdditionalData.Add("return-data", true);
		
Res = CropApp.Run(True);
Показать

Приложение открывается, загружается фото, но при нажатии сохранить оно какбы подвисает и не возвращает значение. Может есть идея как победить?

У меня есть подозрение, что может быть недоступен путь для записи, я использую рекомендуемую форму пути:
        FileName = КаталогДокументов()+"MobileFoto.jpg";
        // без замены слешей не сохраняет нормально
        FileName = СтрЗаменить(FileName,"\","/");
        // делаем как бы ссылку на файл для андроида
        FileName = "file://" + FileName; 
178. markers 279 21.09.21 23:59 Сейчас в теме
(177) Что-то точно порекомендовать не могу, но хотел бы обратить на это из справки по КаталогДокументов();
Android:<Абсолютный путь>, может различаться на разных устройствах. Например:
/mnt/sdcard/Android/data/com.e1c.mobile/files/
/storage/emulated/0/Android/data/com.e1c.mobile/files/

Т.е. в качестве каталога документов, 1С возвращает путь к своей папке в каталоге общего доступа (на SD карте или на виртуальной SD карте), а значит (особенно если Android свежий), есть вероятность что в ту папку не может получить доступ другое приложение, от того оно и виснет.
Варианта вижу три:
1) Указывать путь к какой-то созданной папке, вне папки data (Получить путь, отбросить каталог files, каталог приложения и каталог data, создать папку и обрезать в неё)
2) Делать снимки самой 1С, где вы в явном виде можете указать качество изображения
3) Делать кроп на принимающей стороне (там, куда мобильное приложение сливает данные)
PS: Так же стоит обратить внимание, что в относительно свежих версиях Android, очень сильно ограничили доступ к НЕ своим данным из приложения, так что возможно и это как-то сказывается. Но всё это лишь мысли к размышлению, чем конечное решение.
161. Ukubaeva 10.09.19 14:35 Сейчас в теме
Здравствуйте!
Есть ли Acode Tools для мобильной платформы 8.3.15.59? И на 9 андроид? Если есть, где можно взять?
Спасибо!
162. WKBAPKA 216 06.11.19 10:42 Сейчас в теме
кошмар. как хорошо что я не стал изучать мобильную платформу :)
все равно надо знать андроид )))
164. ratinc 13.11.19 18:53 Сейчас в теме
(161) Acode Tools вроде как не развивается потому что почти все уже доступно из мобильной платформы.
Я чудом вообще нашел эту ветку обсуждения.
У меня была проблема с обменами. Очень был нужен архиватор. Acode Tools не взлетело.
По описанию в этой статье пытался использовать приложение https://developer.zebra.com/community/home/blog/2018/04/27/android-unzip-utility
Тоже не взлетело, у меня 5 -ый андроид.
Пришлось засучить рукава, потратить целый день, ведь я впервые увидел андроид студио.
В итоге приложение за день было таки написано.
А теперь по теме статьи. Мое приложение никак не удавалось вызвать из 1С.
Интентов своих я не делал, не хватило знаний.
Что бы запустить приложение по имени нужно указать класс. Как например в приложении зебры
<parm name="Class" value="com.smartphoneremote.androidscriptfree.AndroidScriptFree" />
В моем приложении в файле манифеста класс небыл указан да и не хватило мозга сделать.
Всё, здесь был тупик. Помогли друзья, подсказали в 1С в качестве класса указать содержимое тега
<activity android:name="
В моем случае было так
НовВз.ИмяКласса = "com.rbacom.r_zip.MainActivity";
165. malinko.vasiliy 7 30.12.19 16:33 Сейчас в теме
Добавлю от себя. Запуск сканера officelens
#Если МобильноеПриложениеКлиент Тогда
НовыйЗапуск = Новый ЗапускПриложенияМобильногоУстройства();
НовыйЗапуск.Действие = "android.media.action.IMAGE_CAPTURE";
НовыйЗапуск.Приложение = "com.microsoft.office.officelens";
НовыйЗапуск.ИмяКласса = "com.microsoft.office.officelens.MainActivity";
НовыйЗапуск.Запустить(Истина);
#КонецЕсли
166. the_Priest 04.06.20 17:19 Сейчас в теме
Может кто делал открытие редактора фото с последующим возвратом результата?
Задача следующая: есть документ с прикреплёнными к нему картинками, нужно иметь возможность на мобильнике открыть картинку, что-то на ней нарисовать (например просто пальцем обвести область) и затем отредактированную версию так же прикрепить к этому документу.
Может кто сталкивался с подобным?
168. maikl007 99 31.03.21 07:40 Сейчас в теме
Доброе! Не подскажи почему перестала работать ЗапуститьПриложение("*.apk") на андройде. Раньше работало, платформа 8.3.18.60
169. maikl007 99 31.03.21 08:01 Сейчас в теме
(168) на платформе 8.3.15.62 ЗапуститьПриложение("*.apk") работает. очень странно.... Причем новое разрешение не работает.
Прикрепленные файлы:
170. kvagabest 05.04.21 02:37 Сейчас в теме
(169) Мобильная платформа 8.3.18.47 - не работает ничего из перечисленного:

ЗапуститьПриложение
ЗапуститьПриложениеАсинх
НачатьЗапускПриложения

Перепробовал и так и сяк - либо ноль реакции, либо платформа вылетает с ошибкой.
Также пробовал через ЗапускПриложенияМобильногоУстройства:

Действие = "android.intent.action.VIEW"
Данные = "file:///storage/emulated/0/Android/data/MyApp/files/MyFile.apk"
Тип = "application/vnd.android.package-archive"

Тоже никак не реагирует. Может какие параметры перепутал...

У кого-нибудь получилось запустить файл apk из-под мобильной платформы 1С?
171. sokdm 08.04.21 17:16 Сейчас в теме
А как аналогичное реализовать на iOS?
179. Teut_Vlad 198 03.08.22 05:25 Сейчас в теме
НовВз.Тип = "image/*"; //"file/*"; //"*/*"

Реально ли указать json ?
180. ISP 05.09.22 09:39 Сейчас в теме
Есть TCД Urove 6200 с встроенным аппаратным лазерным сканером. Как узнать название приложения, которое запускает сканерование ?
181. buzzzard 51 26.02.23 13:28 Сейчас в теме
День добрый.
А что нужно сделать чтобы на андроиде при нажатии кнопок Поделиться в списке было мобильное приложение на 1С?
Или это пока невозможно и продолжаем ждать когда в 1С запилят broadcast receiver для SENDTO?
Надеюсь терминологию правильно использовал...
В примерах есть "Как отправить файл в разные программы". Так вот интересует обратный вариант.
182. oslokot 196 24.05.23 16:43 Сейчас в теме
Добрый день всем. А как можно воспроизвести текст средствами андроида, а не платформенным способом СредстваМультимедиа.ВоспроизвестиТекст(). Платформенный иногда "проглатывает" слова.
183. buzzzard 51 28.06.23 16:26 Сейчас в теме
(182) В каком смысле проглатывает? В середине фразы пропускает какое-то слово? Или может быть вначале?
184. oslokot 196 28.06.23 16:29 Сейчас в теме
(183) В начале. А бывает что не проговаривает аж половину предложения с самого начала
185. buzzzard 51 22.09.23 17:36 Сейчас в теме
(184) У меня такое было когда через блютуз воспроизводилось. Отключаешь и все болтает хорошо.
186. Orman071 25.01.24 14:12 Сейчас в теме
Добрый день. А как можно открыть стороннее приложение карт и передать туда координаты?
187. Prometeus2011 178 22.04.24 12:25 Сейчас в теме
В работе класса 1с ЗапускПриложенияМобильногоУстройства есть еще такой очень важный и иногда неприятный нюанс.
Все методы запуска (Запустить, ЗапуститьАсинх, ЗапуститьБезОжидания), принадлежащие этому классу, запускают приложение в контексте процесса ЗАПУСКАЮЩЕГО приложения (без флага FLAG_ACTIVITY_NEW_TASK). Со всеми вытекающими...
Визуально это выглядит как запуск другого приложения прямо в окне запускающего приложения. Т.е. новое "окно" в карусели окон не создается. Одно из неприятных последствий такого поведения - то, что если в запускаемом приложении есть баг и андроид его крашит, то крашится "Ваш" процесс (т.е. тот, который запустил сбойный пакет). Пример другого последствия: отсутствие этого флага в запускающем Намерении (Intent'е - в терминологии Андроида) не позволяет запускать активити (окна) системных настроек - например, запрашивать внесение приложения в белый список по питанию или открывать список wi-fi соединений и т.д. (правда, в случае с 1с это итак не получится, поскольку желание запуска таких окон надо еще в манифесте приложения прописать, а 1с не дает прямой доступ к манифесту МП).
Наблюдал еще и другие артефакты в поведении 1с МП - при запуске в контексте запускающего процесса.
Это обычно меняется установкой флага "FLAG_ACTIVITY_NEW_TASK" через метод "setFlags", применяемый к объекту намерения, но как устанавливать произвольные флаги намерения в 1с - я не нашел.

Но да... есть способ как заставить 1с создавать новый процесс при запуске приложения - через использование Deep Linking (https://wonderland.v8.1c.ru/blog/zapusk-mobilnykh-prilozheniy-1s-iz-vneshnikh-istochnikov/?sphrase_id=322051).

Заметка написана, на мой взгляд, слегка сумбурно, но если выкинуть там часть, которая говорит, что Вам следует поднять свой сайт(!!!), то все работает. То-есть: если создавать класс ЗапускПриложенияМобильногоУстройства с указанием глубокой ссылки: Новый ЗапускПриложенияМобильногоУстройства("android.intent.action.VIEW", "myapp://testPath?key1=1"), а не Новый ЗапускПриложенияМобильногоУстройства("android.intent.action.VIEW"), то операционка создает новый процесс. Единственное, что - запускаемое приложение в манифесте должно объявлять свою способность обрабатывать конкретные схемы deeplink (это то, что до двоеточия и двойного слеша ("myapp")).
188. Desere799 1126 24.06.24 12:59 Сейчас в теме
А как выбрать картинку с определенным форматом?

Вот так:
НовВз = Новый ЗапускПриложенияМобильногоУстройства();
		    НовВз.Действие = "android.intent.action.GET_CONTENT";
		    //Указываем тип искомых файлов, нас интересует только фото
		    НовВз.Тип = "image/*";//"file/*"; //"*/*"
		    //Говорим что интересуют только локальные данные, а не облачные
			
			// Указываем нужные форматы
			МассивТипов = новый Массив;
			МассивТипов.Добавить("image/jpeg");
			МассивТипов.Добавить("image/png");
			
			НовВз.ДополнительныеДанные.Добавить("android.intent.extra.LOCAL_ONLY",Истина);
			НовВз.ДополнительныеДанные.Добавить("android.intent.extra.MIME_TYPES",МассивТипов);
		    РезультатРаботы = НовВз.Запустить(Истина);
		    Если НЕ РезультатРаботы Тогда
		        Возврат Неопределено;
		    КонецЕсли;
		    ПутьКФайлу = НовВз.Данные;   
			возврат ПутьКФайлу;
Показать
Для отправки сообщения требуется регистрация/авторизация