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

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    54617    137    102    

161

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33281    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    6876    ROk_dev    56    

37

JavaScript в Simple

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

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

12.02.2024    1628    informa1555    0    

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

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

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

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

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

Как я понял, запускать можно только активити с параметрами? Сервисы таким образом запускать нельзя?
94. DitriX 2091 30.09.15 17:22 Сейчас в теме
(93) вы вызываете намерение, у сервисов их нет, т.е. вы и активити то не все вызвать можете, а только те, у которых есть фильтр намерений.
95. djvu 143 01.10.15 08:26 Сейчас в теме
(94)
Т.е. для организации двухстороннего обмена с сервисом с использованием интентов нужна активити-прослойка в любом случае :/
Получается и асинхронный режим выпадает?
96. DitriX 2091 02.10.15 11:25 Сейчас в теме
(95) djvu, во всяком случае - на текущий момент, да.
Но как научимся слушать бродкасты...
98. enot_tut 18 18.11.15 10:04 Сейчас в теме
(96) можно конфигурацию скинуть этой статьи
99. DitriX 2091 21.11.15 20:28 Сейчас в теме
163. WKBAPKA 214 06.11.19 10:47 Сейчас в теме
(7) эх, еще бы LiveDat-у подключить :)
6. AlX0id 16.09.14 15:30 Сейчас в теме
А я говорил, что интенты добавят :)
8. allegrosoft 52 16.09.14 18:24 Сейчас в теме
С какого релиза все это стало возможно?
9. flyer 231 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 52 17.09.14 09:33 Сейчас в теме
А можно исходники приложения?))
11. DitriX 2091 17.09.14 14:52 Сейчас в теме
(10) можно все :) Позже обновлю статью и добавлю исходники
12. allegrosoft 52 17.09.14 14:57 Сейчас в теме
13. DitriX 2091 17.09.14 18:16 Сейчас в теме
14. sergei_tekh 84 22.09.14 16:30 Сейчас в теме
В эмуляторе (VMware) метод тоже должен работать? У меня ничего не происходит и никаких ошибок не выдаётся.
15. DitriX 2091 22.09.14 16:47 Сейчас в теме
(14) смотря что вы тестируете.
16. sergei_tekh 84 22.09.14 17:36 Сейчас в теме
(15) попробовал все примеры, что здесь были. Допустим, отправку почты:
&НаКлиенте
Процедура Сообщения(Команда)
	
    НовВз = Новый ЗапускПриложенияМобильногоУстройства();
    НовВз.Действие = "android.intent.action.SEND"; 
    Сообщить(НовВз.Запустить(ложь));
	
КонецПроцедуры

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

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

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

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

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

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

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

?
Что вам в ответ приходит?
21. CyberCerber 852 07.10.14 20:54 Сейчас в теме
(20) да, именно так и делаю. В ответ приходит 0. И больше ничего не происходит.
22. DitriX 2091 07.10.14 21:43 Сейчас в теме
(21) CyberCerber, Даже не знаю что ответить. Это стандартная функция андроида.
Давайте тогда уточним все:
1. Версия андроид
2. Версия 1С
3. Название устройство
4. На скольки устройствах тестировали
5. Вы точно именно так писали? С учетом регистров и без своих каких-либо добавлений? На всякий случай скопируйте этот код и проверьте еще раз. Дабы был чистый эксперимент.
23. CyberCerber 852 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 852 08.10.14 10:45 Сейчас в теме
(22) протестил на Samsung Galaxy S3 Android 4.3 - тоже самое

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

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

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

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

Интерактивно делается так: Мои файлы - выбираем файл или каталог - меню - Заархивировать.
32. DitriX 2091 20.10.14 18:28 Сейчас в теме
33. dj_serega 390 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 2091 21.10.14 17:04 Сейчас в теме
(33) dj_serega,
FTPСоединение (FTPConnection)

Описание:

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

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

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

А как на счет вызова программы которая запакует несколько файлов?
36. DitriX 2091 22.10.14 17:33 Сейчас в теме
(35) хм, ну продолжайте копать :) Авось чего интересного найдете :)
37. CyberCerber 852 19.11.14 10:36 Сейчас в теме
Не подскажите, а может ли 1С отправлять broadcast команды?
В Манифесте приложения есть секция activity с intent-filter. Вот действия оттуда срабатывают.
А вот отправляю команду, которая находится в секции receiver с intent-filter - ничего не происходит.
Если через adb shell отправляю команду "am broadcast -a <описание.команды>", то все работает.
Получается, 1С этого еще не умеет?
38. DitriX 2091 19.11.14 14:26 Сейчас в теме
(37) не может, только стартануть активити может, и принимать бродкасты - тоже пока не умеет.
39. CyberCerber 852 20.11.14 08:20 Сейчас в теме
(38) ясно, значит, будем надеяться на новую версию платформы...
О, вижу, вы выложили разработку Acode tools! Как я понимаю, через нее можно реализовать и это.
40. arisha_rein 21.11.14 22:42 Сейчас в теме
Подскажите, пожалуйста, почему ХЗ = Новый ХранилищеЗначения(Новый ДвоичныеДанные("file:///sdcard/Download/FotoTestFrom1C.bmp")); вызывает ошибку недопустимое значение параметра 1?
41. DitriX 2091 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";
Запуск.Запустить(Истина);
Показать
akR00b; mojo.aka; dablack; DitriX; +4 Ответить
44. gigapevt 25 27.11.14 18:31 Сейчас в теме
А как скрыть экранную клавиатуру после окончания ввода текста (например в своей форме поиска).

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

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
45. DitriX 2091 27.11.14 20:39 Сейчас в теме
(44) без исходников 1с - никак. Во всяком случае - мы не смогли этого добиться.
Еще один из вариантов - своя клавиатура. Вот у нас в ТСД своя клавиатура, и мы ее можем скрывать, открывать и вообще че хотим то и делаем :)
128. mxs89 11 03.11.17 11:50 Сейчас в теме
(45) приветствую. есть какие нибудь изменения касательно скрытия клавиатуры? Если своя клавиатура, имеется в виду скачать какую нибудь клавиатуру с playmarket? например эту
46. ssa 04.02.15 01:05 Сейчас в теме
Большое спасибо за пример с "android.media.action.IMAGE_CAPTURE". Пригодилось.
Но есть проблема с размером картинки. У меня приложение "Камера", которое автоматически вызывается, позволяет установить минимальное разрешение 1 Мпикс. И файл изображения получается большой. Как его можно уменьшить?
47. DitriX 2091 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 2091 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 21 22.07.20 15:44 Сейчас в теме
(51) Самое простое для голосовых команд.
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.speech.action.RECOGNIZE_SPEECH");
		Результат = НовВз.Запустить(Истина);
		Если Результат = 0 Тогда
			Возврат;
		КонецЕсли;
		
		ГолосоваяКоманда= НовВз.ДополнительныеДанные.Получить("query").Значение;
52. solarisman 149 04.03.15 17:10 Сейчас в теме
Подскажите, как сделать таким образом, чтобы при открытии формы курсор сразу вставал на поле, чтобы сканирование выполнялось в поле ввода? Приходится "тапать" на поле, после чего выполнять сканирование.
Нельзя ли, например, поставить стороннюю клавиатуру и вызвать событие "Enter" или "Tab"?
53. DitriX 2091 05.03.15 18:14 Сейчас в теме
(52) баг платформы, увы, эта опция доступно только в 8.3.4.17, во всех остальных - не работает. А вам с какой целью?
54. solarisman 149 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 2091 09.04.15 11:48 Сейчас в теме
(54) не туда копаете, правьте манифест и там указывайте что хотите, только это нарушает лицензию 1с :)
56. solarisman 149 09.04.15 18:01 Сейчас в теме
(55) Было бы все так просто. Правка манифеста - не панацея. Опробовали на разных устройствах, и в зависимости от параметров экрана снизу остается полоса высотой до 100 пикселей. На смартфонах от 3,5 до 4" работает норм. На смарте 5" остается совсем небольшая полоса снизу, почти незаметная, а вот на ТСД - бидапичаль. Причем после закрытия окон в этой полосе отображается шапка окна (глюк?)
В приложении это видно. При правке манифеста единственное, что меняется - скрывается статусбар

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


Чтобы он в галерее отображался? А то у меня физически есть а в галереи нету?
80. DitriX 2091 28.05.15 17:48 Сейчас в теме
(79) не понял вопрос, можете уточнить?
81. DeniNikitin 36 28.05.15 20:51 Сейчас в теме
(80)
Смысл в следующем, код работает и файл сохраняет, но при этом захожу в галерею андроида, его там нет! Через total commander - есть! Вы в андроиде больше понимаете, скорей всего есть какой-то параметр, который надо подключить, чтобы в галерее отображался!
82. DitriX 2091 28.05.15 20:56 Сейчас в теме
(81) ну для начала путь укажите верный: file:///sdcard/DCIM/Camera/FotoTestFrom1C.jpg
83. DeniNikitin 36 29.05.15 06:19 Сейчас в теме
(82) Дело не в пути, я галерею открываю и у меня там по папкам фото отображается и в том числе есть папка DCIM, и которые файлы там лежат они отображаются кроме того, что сфотал интентом!
84. DitriX 2091 29.05.15 10:09 Сейчас в теме
(83) очень интересно. Может расширение файла не совпадает с его реальным типом?
Тут я затрудняюсь ответить. У меня галерея подхватывает все. Так что тут скорее всего вопросы именно в вашей галерее.
85. Andrey_R91 23.07.15 15:52 Сейчас в теме
Подскажите, как можно открыть html-файл через браузер? Какой MIME-тип нужно указывать чтобы запустился браузер? Или само название приложения (к примеру "com.google.android.gm")
Оставьте свое сообщение