#java #android #cordova #telephonymanager #deviceid
#java #Android #кордова #telephonymanager #deviceid
Вопрос:
Я проверял приложение Cordova, которое вызывает API для бесплатного открытого REST API. В одном из запросов POST он отправляет идентификатор устройства в объекте JSON. Идентификатор устройства в приложении Cordova получается с помощью:
this.device.uuid;
Я планирую создать то же приложение с использованием Java и, следовательно, должен получить доступ к этому идентификатору устройства, чтобы вызвать API. Я попытался сделать то же самое, используя следующий код.
TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String uuid = tManager.getDeviceId();
Но я понял, что мне нужно будет получить доступ к READ_PRIVILEGED_PHONE_STATE в файле манифеста, но к нему можно получить доступ только с помощью системного приложения, а не стороннего. Итак, как это приложение Cordova получает к нему доступ?
PS — Есть вероятность, что this.device.uuid;
приложение Cordova может не возвращать то, о чем я думаю. Итак, я просто покажу вам идентификатор устройства моего телефона, с помощью которого вы сможете выяснить, что это такое и как получить к нему доступ в Android с помощью Java. Идентификатор устройства, который получает приложение Cordova — 29904bc142b60dce (не меняется)
Ответ №1:
Код, о котором я упоминал выше, теперь устарел. Используйте следующий код:
String device_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
Кроме того, после Android M; для каждого другого приложения существует другой идентификатор устройства. Это то, что я не мог понять и ломал голову. У приложения, которое я разработал, был другой идентификатор устройства по сравнению с приложением, с которым я его сравнивал. Поэтому не ожидайте, что два разных приложения на одном устройстве будут иметь один и тот же идентификатор устройства.