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

08.10.14

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

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

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

Наименование Файл Версия Размер
Пушы и тосты для тестов
.apk 53,08Kb
45
.apk 53,08Kb 45 Скачать
Исходники (клиента и сервиса)
.zip 4,19Mb
69
.zip 4,19Mb 69 Скачать

Добрый день.

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

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

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

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

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

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

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

Давайте начнем с чего-то малого, но не менее интересного. К примеру – попробуем просканировать штрих-код при помощи камеры телефона, но не средствами 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С
ЗапуститьПриложение(ФайлВр);



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

См. также

"Штрихкод-информер" - мобильный ТСД и прайс-чекер в смартфоне

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

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

2880 руб.

03.12.2018    54621    137    102    

161

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 9900 руб.

27.12.2021    33283    80    157    

174

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android

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

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

2000 руб.

22.04.2019    91947    511    186    

293

Магазин 15 - приемка товара по штрихкодам или инвентаризация в торговом зале

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

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

12950 руб.

30.05.2023    3388    2    0    

4

Работа с графикой в браузере (SimpleWEB). Векторный редактор

Мобильная разработка WEB-интеграция Мобильная платформа Абонемент ($m)

В SimpleWEB добавились средства для работы с графикой и отслеживание событий мыши, в онлайн редактор https://seditor.ru:1555/ добавился «Векторный редактор» на этом API. Теперь можно нарисовать схемы складов на ПК, сделать карты (*.sug-файлы) для мобильной платформы SimpleUI, выводить данные из 1С в графическом виде. Таким образом, API для работы с векторными файлами теперь есть и в веб- и в мобильной платформе, а также средства для создания и редактирования векторных файлов есть тоже в обеих платформах.

1 стартмани

20.03.2024    1478    0    informa1555    1    

39

Зачем нам 1С:Элемент

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

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    6884    ROk_dev    56    

37

JavaScript в Simple

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

В SimpleUI и SimpleWEB, наряду с обработчиками на python и онлайн (1С и т.д.) добавляется интерпретатор JavaScript. В андроид платформе он скорее играет на поле python, т.к. является оффлайновым решением для самостоятельной обработки и расширяет аудиторию разработчиков для разработки самостоятельных решений. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

12.02.2024    1629    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
86. DitriX 2091 23.07.15 16:56 Сейчас в теме
(85) так вы же сами ответили.
берите за пример открытие контакта в вибере
90. enot_tut 18 27.07.15 20:19 Сейчас в теме
87. zwitter 27.07.15 08:28 Сейчас в теме
79. А диктофон встроенный никто не пробовал запускать?
а то метод СделатьАудиозапись меня не совсем устраивает.
88. zwitter 27.07.15 17:49 Сейчас в теме
НП = Новый ЗапускПриложенияМобильногоУстройства("android.provider.MediaStore.RECORD_SOUND");
89. enot_tut 18 27.07.15 18:45 Сейчас в теме
помогите исправить при загрузке фотографий из телефона фотка не отоброаеться а при добовление с компа все норм
&НаКлиенте
Процедура ДобавитьКартинку(Команда)
ИмяФайла = "";
ПутьФайла = "";
//Вызываем Диалоговое окно и помещаем файл Картинки из локальной файловой системы во временное хранилище
Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина) = Истина Тогда
 
//в строковый реквизит ФОТО нашей формы сохраняем ссылку на Картинку во временном хранилище
Фото = ПутьФайла;
//для создания нового элемента в Справочнике Файлы и записи Картинки в его реквизит Файл
//переходим на сервер с помощью вызова серверной процедуры
УстановитьКартинку();
КонецЕсли; 
//условие ЕСЛИ нужно для того, чтобы если пользователь отказался от выбора файла
//мы не вызывали серверную процедуру УстановитьКартинку()

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

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

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

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

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

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

Идеальный вариант - дайте просто обработку, в которой четко понятно, что вы хотите сделать, и что не получается.
92. enot_tut 18 27.07.15 23:24 Сейчас в теме
(91) при добавление с компьютера
фотография добавляться на мобильном устройств а также на компьютере,
а при добавление с мобильного устройства фотка не где не отоброжаеться
Прикрепленные файлы:
97. Silmariil 156 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 2091 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 2091 20.01.16 12:28 Сейчас в теме
Увы, этого не поддерживают стандартные месенджеры, это своеобразная защита от создания спам ботов. Ну и от вирусов, что бы не было такого, что вы поставили игру, а она потом всем вашим контактам разослала вирусы.
Хотя, неисключенно, что через одно место сделать можно.
106. mulder242 3 31.03.16 14:57 Сейчас в теме
Вопрос, можно ли выбрать контакты для отправки сообщений Viber не из книги контактов, а из запроса к базе ? (рассылка по справочнику контрагенты) ?
107. DitriX 2091 02.04.16 19:22 Сейчас в теме
не думаю, иначе бы все клепали кучу ботов
108. ISP 05.07.16 16:06 Сейчас в теме
Не получается сделать фото через камеру. Смартфон Megafon Login 2

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

Что означают "///"?.
109. DitriX 2091 05.07.16 23:14 Сейчас в теме
(108) ISP, вы ответили на свой вопрос, значит ваша камера контекст подставляет сама, пробуйте вообще без file://
111. Широкий 692 08.11.16 11:50 Сейчас в теме
Можно ли через "ЗапускПриложенияМобильногоУстройства" снять координаты текущего местоположения (аналогично штатному "СредстваГеопозиционирования")?
112. DitriX 2091 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 2091 18.11.16 23:10 Сейчас в теме
(113) Serdgio, нет, 1с не поддерживает масив ури :(
115. Serdgio 195 21.11.16 11:41 Сейчас в теме
(114) DitriX, спасибо за информацию. Не буду тратить время :)
116. DitriX 2091 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 2091 29.11.16 16:13 Сейчас в теме
(117) вы таки уверенны что хотите услышать мое решение проблемы? ок
Подключаетесь к сайту, который может опредилить ваш IP, и вернет по нему страну :)
119. Serdgio 195 29.11.16 17:03 Сейчас в теме
Шоб да, так нет :)
А за вариант решения в любом случае благодарю!
120. babybu 29 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 43 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 231 20.09.17 13:48 Сейчас в теме
(124) данное действие только открывает приложение? хорошо сразу бы отправлять
126. lowuser 20.09.17 13:52 Сейчас в теме
(125)Оно открывает диалог с указанным контактом
127. VitushVV 4 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 2091 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 6 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 6 15.03.19 12:56 Сейчас в теме
С Intent'ами аналогично :(
НП = Новый ЗапускПриложенияМобильногоУстройства("android.provider.MediaStore.RECORD_SOUND");

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

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

Может быть кто нибудь сумел это победить?
152. Al-77 73 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 274 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 274 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 274 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 214 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 91 31.03.21 07:40 Сейчас в теме
Доброе! Не подскажи почему перестала работать ЗапуститьПриложение("*.apk") на андройде. Раньше работало, платформа 8.3.18.60
169. maikl007 91 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 179 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 190 24.05.23 16:43 Сейчас в теме
Добрый день всем. А как можно воспроизвести текст средствами андроида, а не платформенным способом СредстваМультимедиа.ВоспроизвестиТекст(). Платформенный иногда "проглатывает" слова.
183. buzzzard 51 28.06.23 16:26 Сейчас в теме
(182) В каком смысле проглатывает? В середине фразы пропускает какое-то слово? Или может быть вначале?
184. oslokot 190 28.06.23 16:29 Сейчас в теме
(183) В начале. А бывает что не проговаривает аж половину предложения с самого начала
185. buzzzard 51 22.09.23 17:36 Сейчас в теме
(184) У меня такое было когда через блютуз воспроизводилось. Отключаешь и все болтает хорошо.
186. Orman071 25.01.24 14:12 Сейчас в теме
Добрый день. А как можно открыть стороннее приложение карт и передать туда координаты?
Оставьте свое сообщение