Как получить uuid Android с помощью Java, как это сделало другое приложение Cordova?

#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; для каждого другого приложения существует другой идентификатор устройства. Это то, что я не мог понять и ломал голову. У приложения, которое я разработал, был другой идентификатор устройства по сравнению с приложением, с которым я его сравнивал. Поэтому не ожидайте, что два разных приложения на одном устройстве будут иметь один и тот же идентификатор устройства.