Мобильная платформа. Уникальный идентификатор устройства Android при помощи внешней компоненты. Не IMEI

0. 32 22.04.20 21:45 Сейчас в теме
Идентифицируем устройства, на которых установлены копии нашего приложения.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WKBAPKA 225 25.06.20 23:39 Сейчас в теме
Проблема не в READ_PHONE_STATE, как раз разрешение работает,рефлексия тоже, но только на уровне системы получить IMEI уже нельзя
Caused by: java.lang.SecurityException: getImeiForSlot: The user 10159 does not meet the requirements to access device identifiers.
2. WKBAPKA 225 25.06.20 23:42 Сейчас в теме
Я использовал вот такой вот код

 public static String getDeviceIDAndroidQ() {
        String uniquePseudoID = "35" +
                Build.BOARD.length() % 10 +
                Build.BRAND.length() % 10 +
                Build.DEVICE.length() % 10 +
                Build.DISPLAY.length() % 10 +
                Build.HOST.length() % 10 +
                Build.ID.length() % 10 +
                Build.MANUFACTURER.length() % 10 +
                Build.MODEL.length() % 10 +
                Build.PRODUCT.length() % 10 +
                Build.TAGS.length() % 10 +
                Build.TYPE.length() % 10 +
                Build.USER.length() % 10;
        String serial = Build.getRadioVersion();
        String uuid = new UUID(uniquePseudoID.hashCode(), serial.hashCode()).toString();
        return uuid;
    }
Показать


но как практика показала, результат меняется,иногда
3. kinan 32 26.06.20 10:50 Сейчас в теме
До читателя я пытаюсь донести тот факт, что проблема как раз в получении диалогового окна запрашивающего разрешения от пользователя. Не важно какое разрешение. Важно что технология разработки компонент для мобильной платформы полностью игнорирует такую необходимость. И разработать компоненту возвращающую IMEI без энциклопедических знаний JNI не получится даже при условии, что она будет использоваться в Android более ранних версий.
4. Umix 126 05.09.20 09:49 Сейчас в теме
Не совсем понятно.
Перелопатил много разной информации, но уникальный код, подобный IMEI,S/N без разрешения "простому разработчику" так и удалось получить.
В итоге, либо получаемый код не уникален, либо изменяется при переустановки приложения, либо при сбросе к заводским настройкам.

Результат вашего кода действительно уникален как IMEI?
5. kinan 32 05.09.20 15:25 Сейчас в теме
(4)Уникален. Не изменяется. Проверено на Huawei Nexus 6P / API 27. На всех остальных телефонах сброс к заводским настройкам делать не буду, может быть и изменяется где-то... Уникальность результата уникальна в рамках пакета. То есть, для приложения "А" ID будет "x", для приложения "B" ID уже "y". Чтоб его сменить, надо сменить "Полный идентификатор приложения для Android" в сборщике.
6. Umix 126 05.09.20 19:35 Сейчас в теме
(5) интересно, т.к. к чему только не привязывался уникальность получалась неуникальной.
Опять же не пойму это ID приложения, тогда он одинаков для всех устройств, а нужно, чтобы уникальность каждого устройства.
8. kinan 32 05.09.20 21:33 Сейчас в теме
(6)В описании я описал. Повторюсь. Проблема была у меня, важная. Для себя я её решил как нужно мне. Если у кого такая же, решение вот оно.
7. Umix 126 05.09.20 19:51 Сейчас в теме
Если же вы привязывайтесь к рекламному ID (Android ID (он же SSAID) ), то это тоже не выход, его можно сбросить.
9. kinan 32 05.09.20 21:34 Сейчас в теме
10. ratinc 06.11.20 22:52 Сейчас в теме
Можно ли немного больше раскрыть тему?
Архив скачал, пытаюсь подключить компоненту
ПодключитьВнешнююКомпоненту( "ОбщиеМакеты.phone_id", "Sample", ТипВнешнейКомпоненты.Native)

Получаю - ложь.
В макете именно zip архив.
Платформа 8.3.16.142
11. kinan 32 07.11.20 13:23 Сейчас в теме
(10) мне трудно судить о причинах ошибки что у Вас возникает. Сначала делается макет. Правый клик по разделу "Общие макеты" - "Добавить". В открывшемся окне в разделе "Выберите тип макета" выбирается пункт "Внешняя компонента". "Готово". "Загрузить из файла". Выбирается zip-архив с компонентой.

Использовать после этого в коде:

AttachAddIn ( "CommonTemplate.phone_id", "Sample", AddInType.Native );
Lib = New ( "AddIn.Sample.SimonsID" );

uid = Lib.GetID ();
12. ratinc 07.11.20 14:22 Сейчас в теме
(11) Я понимаю что вероятно проблема не в вашей компоненте.
Но, не получается её подключить.
Вроде все по феншую
https://drive.google.com/file/d/1Cumg8STmHGAKyfJH5tP2WKYMoAHPOY3j/view?usp=sharing
В отладчике при подключении все равно выдает ложь.
И макет правильный и код подключения вроде тоже )))
Однако процесс не идет
13. kinan 32 08.11.20 14:19 Сейчас в теме
(12)В процессе разработки компоненты её постоянно нужно заново загружать в макет компоненты в тестовой конфигурации и проверять работу на телефоне. Так вот опытным путём установлено, что однажды попав в телефон, при первой загрузке базы в мобильной платформе, компонента не обновляется при обновлении конфигурации на сервере. Чтоб всё-таки загрузить обновлённую компоненту в телефон для теста я постоянно удаляю тестовую базу из телефона и загружаю её заново.

Я это к тому, что есть какой-то платформенный изъян в части обмена компонентой между сервером и телефоном. Расскажу как я делаю, чтоб быть на 100% уверенным что компонента на телефон всё же попала и я тестирую базу в которой она действительно есть:

Во-первых, после того как база опубликована на web-сервере (я это делаю через IIS) захожу в папку "C:/inetpub/wwwroot/" и в подпапках опубликованной базы проверяю наличие файлов компоненты с расширением ".apk" и ".so"

После этого запускаю программу "hfs". Она подменяет собой web-сервер. В её окно перетаскиваю папку публикации из "C:/inetpub/wwwroot/" и в телефоне в качестве пути к базе прописываю значение поля "open in browser".

И когда я открываю базу в телефоне, в hfs показывается текст с путями и названиями файлов которые были переданы в телефон. Я обращаю внимание на то были ли переданы с сервера файлы с расширением ".apk" и ".so"

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

Ссылка на скачивание hfs http://www.rejetto.com/hfs/?f=dl

И, тем не менее, работа компоненты проверена на платформе 8.3.15.59.
14. kinan 32 08.11.20 14:22 Сейчас в теме
(12)если не секрет, где Вы взяли эту компоненту?
15. ratinc 08.11.20 16:01 Сейчас в теме
(14) Скачал в этой публикации.
Но не с этого аккаунта. Коллега имеющий на балансе стартмани скачал по моей просьбе.
Это было 5 го ноября.
По поводу вашего предыдущего сообщения проверю. У меня правда апач, но там тоже можно посмотреть запрашивается ли файл с сервера
Оставьте свое сообщение
Вопросы с вознаграждением