Получение AndroidID в мобильном приложении

05.11.19

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

Получаем Android DeviceID в мобильном приложении/клиенте, используя стороннее приложение.

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Получение AndroidID в мобильном приложении:
.7z 8,53Mb
22 1 850 руб. Купить

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

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

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

Привет сообщество! На одном из проектов у меня встала задача организовать связку 1 пользователь = 1 мобильное устройство (под управлением Android), т.е. запретить вход с разных устройств под одним пользователем. Логично, что я решил использовать AndroidID в качестве идентификатора, однако быстрый поиск в гугле меня озадачил, оказалось, что на текущий момент штатными средствами мобильной платформы его не получить. На глаза попались отличные статьи от Дмитрия Васильева (за что ему огромный респект, статьи раз, два и три), где очень подробно описано как взаимодействовать со сторонними приложениями через Intent, поэтому расписывать код не буду, смотрите исходники). Я перебрал добрый десяток приложений в маркете от самых простых до более навороченных, но так и не смог найти приложение, которое бы поддерживало передачу значения в Intent. Что же придется писать свое приложение, по сути это мое первое приложение на Android, и оно максимально простое, но свою задачу оно выполняет, определяет, а главное возвращает в 1С значение.

Главный экран приложения (для первоначального занесения идентификатора в 1С)

Код в 1С:

Функция ПолучитьIDУстройства() Экспорт

	IDУстройства = Неопределено;
	
	#Если МобильныйКлиент ИЛИ МобильноеПриложение Тогда
		ЗапускПриложения = Новый ЗапускПриложенияМобильногоУстройства();
		Если ЗапускПриложения.ПоддерживаетсяЗапуск() Тогда
			ЗапускПриложения.Действие = "com.android.tinydeviceid.action.getDeviceID";
			ЗапускПриложения.Запустить(Истина);
			Для Каждого КлючЗначение Из ЗапускПриложения.ДополнительныеДанные Цикл
				Если КлючЗначение.Ключ = "DeviceID" Тогда
					IDУстройства = КлючЗначение.Значение;
					Прервать;
				КонецЕсли;	
			КонецЦикла;
		КонецЕсли;
	#КонецЕсли
	
	Возврат IDУстройства;

КонецФункции // ПолучитьIDУстройства()

Ну и конечный результат:

В архиве само приложение (apk) и исходники, также есть на гитхабе (AntSidorov)

Надеюсь сэкономлю кому-нибудь немного времени, всем успехов!

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

Мобильная платформа мобильный клиент android device id

См. также

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

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

3000 руб.

03.12.2018    63854    218    104    

183

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

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

13200 руб.

27.12.2021    44420    124    172    

219

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

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

3000 руб.

22.04.2019    106651    649    198    

349

Мобильная разработка 1С v8.3 1С:Управление торговлей 11 Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

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

15000 руб.

24.06.2025    623    1    0    

2

Мобильная разработка 1С v8.3 1C:Бухгалтерия Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    6940    2    0    

7

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

Программное обеспечение для автоматизации складских операций со встроенными функциями работы с маркированной продукцией. Предназначено для автоматизации всех товароучетных операций на складах, обычных и адресного хранения. «Склад 15 ВЕЩЕВОЙ» объединил в себе несколько товарных групп маркированного товара (ОБУВЬ, ОДЕЖДА, ШИНЫ, ПАРФЮМ, БАДы, ЮВЕЛИРНЫЕ ИЗДЕЛИЯ), которые чаще всего встречаются в складской логистике вместе.

38000 руб.

02.06.2023    3566    2    0    

1

Мобильная разработка Программист 1С v8.3 Мобильная платформа 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Абонемент ($m)

Товары (либо другие учетные объекты) могут быть промаркированы штрихкодами либо быть без штрихкодов, но с число-буквенным обозначением (артикулом, VIN-номером и т.д.). И та, и другая ситуация не проблема для SimpleUI. Но что делать, если нет ни того, ни другого? Вообще никакой маркировки. Как можно максимально ускорить работу с таким объектами? В статье показываю новые фичи релиза и готовые для встраивания поисковые комбайны на все случаи жизни. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

14.04.2025    1796    4    informa1555    0    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 216 06.11.19 10:33 Сейчас в теме
а как получаете разрешение?
2. WKBAPKA 216 06.11.19 10:37 Сейчас в теме
public static final String getDeviceID(Context cnx) {
        String IMEINumber = "You don't permission to access";
        if (ActivityCompat.checkSelfPermission(cnx, android.Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
            TelephonyManager telephonyMgr = (TelephonyManager) cnx.getSystemService(TELEPHONY_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                IMEINumber = telephonyMgr.getImei();
            } else {
                IMEINumber = telephonyMgr.getDeviceId();
            }
        }

        return IMEINumber;
    }
Показать


код получения ID в Андроид с учетом разрешений
хорошо, что я не стал изучать мобильную платформу, зачем мне эти приколы )
4. sam441 236 07.11.19 08:02 Сейчас в теме
(2)
хорошо, что я не стал изучать мобильную платформу, зачем мне эти приколы )

я целенаправленно тоже не собирался, но появилась необходимость и пришлось поизучать) и мобильный клиент оставил достаточно положительное впечатление
6. WKBAPKA 216 07.11.19 08:43 Сейчас в теме
(4) для того что бы получить IMEI нужно извращятся :)
1С должна быть программой для учета, Андроид - операционной системой для мобильных устройств... лучше бы они выпустили свой SDK, потому как реализовывать некоторые интерфейсные вещи на чистом андроиде, трудозатратно.
8. sam441 236 07.11.19 08:51 Сейчас в теме
(6)
для того что бы получить IMEI нужно извращятся :)

насчет IMEI не в курсе, я его отмел т.к. насколько я понял в 2-х симочных аппаратах их 2, не буду утверждать, но я понял так
12. kild 98 29.09.21 02:36 Сейчас в теме
(2)
код получения ID в Андроид с учетом разрешений

у вас в коде нет получения Android ID, а попытка получения imei. Любые запросы к персональным данным устройства требуют подтверждения со стороны пользователя и с каждой версии android правила безопасности ужесточаются.
Android ID с 8 версии - уникален для каждого установленного приложения, а не только для устройства. Всегда доступен без пермишнов
val androidID = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)

хорошо, что я не стал изучать мобильную платформу, зачем мне эти приколы )

в обычной платформе таких приколов еще больше или вовсе нерешаемы, например, если пытаться писать для далёких друг от друга версий платформ.
14. GonziK_KIV 03.02.25 11:53 Сейчас в теме
(2) А где это прописывать? У меня код согласно статье не работает. В цикл не заходит
3. sam441 236 07.11.19 07:55 Сейчас в теме
код получения ID в Андроид с учетом разрешений

Да вроде никаких дополнительных разрешений не нужно, я использовал такой код:
import android.provider.Settings;
...
String ANDROID_ID = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
5. WKBAPKA 216 07.11.19 08:38 Сейчас в теме
(3) а как же это ?

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
должно быть по любому в манифесте
7. sam441 236 07.11.19 08:49 Сейчас в теме
(5)
должно быть по любому в манифесте

у меня никаких дополнительных разрешений нет, вот полный листинг манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.tinydeviceid">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".PrivateActivity">
            <intent-filter>
                <action android:name="com.android.tinydeviceid.action.getDeviceID" />
                <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Показать
11. memb3r 09.12.19 14:17 Сейчас в теме
(5)
(7) Начиная с версии Android 6.0 (API level 23) и выше требуется, чтобы в манифесте было прописано разрешение на определенный взаимодействия с системой. Как правильно написал WKBAPKA - нужно сделать проверку, если API >= 23, тогда сначала запрашивать разрешение у пользователя, в другом случае сразу получать идентификатор.

https://developer.android.com/training/permissions/requesting
13. kild 98 29.09.21 02:42 Сейчас в теме
(11)
чтобы в манифесте было прописано разрешение на определенный взаимодействия с системой

Android ID не входит в перечень "определенный взаимодействия с системой" и не требует разрешений.
По вашей ссылке написано, что с Android 6.0 для опасных действий нужно запрашивать разрешения у пользователя.
9. ORlenOK22 12.11.19 17:41 Сейчас в теме
Как работать с архивом?
10. sam441 236 13.11.19 12:41 Сейчас в теме
(9)
В архиве apk приложение ставите на свой телефон, в 1С пишите функцию (пример в статье), публикуете БД и подключаетесь к БД мобильным клиентом.
Оставьте свое сообщение