Привет сообщество! На одном из проектов у меня встала задача организовать связку 1 пользователь = 1 мобильное устройство (под управлением Android), т.е. запретить вход с разных устройств под одним пользователем. Логично, что я решил использовать AndroidID в качестве идентификатора, однако быстрый поиск в гугле меня озадачил, оказалось, что на текущий момент штатными средствами мобильной платформы его не получить. На глаза попались отличные статьи от Дмитрия Васильева (за что ему огромный респект, статьи раз, два и три), где очень подробно описано как взаимодействовать со сторонними приложениями через Intent, поэтому расписывать код не буду, смотрите исходники). Я перебрал добрый десяток приложений в маркете от самых простых до более навороченных, но так и не смог найти приложение, которое бы поддерживало передачу значения в Intent. Что же придется писать свое приложение, по сути это мое первое приложение на Android, и оно максимально простое, но свою задачу оно выполняет, определяет, а главное возвращает в 1С значение.
Главный экран приложения (для первоначального занесения идентификатора в 1С)
Код в 1С:
Функция ПолучитьIDУстройства() Экспорт
IDУстройства = Неопределено;
#Если МобильныйКлиент ИЛИ МобильноеПриложение Тогда
ЗапускПриложения = Новый ЗапускПриложенияМобильногоУстройства();
Если ЗапускПриложения.ПоддерживаетсяЗапуск() Тогда
ЗапускПриложения.Действие = "com.android.tinydeviceid.action.getDeviceID";
ЗапускПриложения.Запустить(Истина);
Для Каждого КлючЗначение Из ЗапускПриложения.ДополнительныеДанные Цикл
Если КлючЗначение.Ключ = "DeviceID" Тогда
IDУстройства = КлючЗначение.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
#КонецЕсли
Возврат IDУстройства;
КонецФункции // ПолучитьIDУстройства()
Ну и конечный результат:
В архиве само приложение (apk) и исходники, также есть на гитхабе (AntSidorov)
Надеюсь сэкономлю кому-нибудь немного времени, всем успехов!