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

05.11.19

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

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

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

Наименование Файл Версия Размер
Получение AndroidID в мобильном приложении:
.7z 8,53Mb
17
.7z 8,53Mb 17 Скачать

Привет сообщество! На одном из проектов у меня встала задача организовать связку 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.х Управленческий учет Платные (руб)

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

2880 руб.

03.12.2018    54598    137    102    

161

SALE! 25%

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

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

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

13200 9900 руб.

27.12.2021    33272    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    91924    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    3387    2    0    

4

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

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

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

1 стартмани

20.03.2024    1461    0    informa1555    1    

39

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

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

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

19.03.2024    6784    ROk_dev    56    

38

JavaScript в Simple

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

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

12.02.2024    1626    informa1555    0    

25
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 214 06.11.19 10:33 Сейчас в теме
а как получаете разрешение?
2. WKBAPKA 214 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 214 07.11.19 08:02 Сейчас в теме
(2)
хорошо, что я не стал изучать мобильную платформу, зачем мне эти приколы )

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

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

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

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

в обычной платформе таких приколов еще больше или вовсе нерешаемы, например, если пытаться писать для далёких друг от друга версий платформ.
3. sam441 214 07.11.19 07:55 Сейчас в теме
код получения ID в Андроид с учетом разрешений

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

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
должно быть по любому в манифесте
7. sam441 214 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 89 29.09.21 02:42 Сейчас в теме
(11)
чтобы в манифесте было прописано разрешение на определенный взаимодействия с системой

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