Как получить номер IMEI с устройства Android при первой установке приложения с помощью IONIC 3

Я хочу получить номер IMEI устройства Android с помощью Ionic 3. Я использую приведенный ниже код, чтобы получить его, перейдя по этой ссылке. https://ionicframework.com/docs/native/uid/.

async getImei() {
 const { hasPermission } = await this.androidPermissions.checkPermission(
   this.androidPermissions.PERMISSION.READ_PHONE_STATE
 );

 if (!hasPermission) {
   const result = await this.androidPermissions.requestPermission(
     this.androidPermissions.PERMISSION.READ_PHONE_STATE
   );

   if (!result.hasPermission) {
     throw new Error('Permissions required');
   }

   // ok, a user gave us permission, we can get him identifiers after restart app
   return;
 }

  return this.uid.IMEI
}

Я вызываю вышеуказанный метод в конструкторе следующим образом.

this.getImei();

Тогда я просто хочу распечатать эту консоль.

console.log("IMEI Number" + this.uid.IMEI);

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

Когда я закрываю приложение, очищаю его от стопки, а затем, когда я снова открываю приложение, в этот раз я получаю значение.

Может ли кто-нибудь помочь мне, как получить значение при первой установке.


person ananya    schedule 11.01.2019    source источник


Ответы (1)


Похоже, вы сначала проверяете разрешение. Если у пользователя его нет (что всегда будет иметь место, когда вы запускаете его в первый раз), вы переходите в if. Внутри вы запрашиваете разрешение, но после того, как пользователь дает вам разрешение, вы просто делаете return; без какого-либо значения. Так что ничего не вернет.

Когда вы запускаете приложение во второй раз, у вас уже есть разрешение, и оно пропускает if и переходит прямо к return this.uid.IMEI

Итак, вы должны вернуть первый return; в return this.uid.IMEI

person Andreas Gassmann    schedule 11.01.2019
comment
Я пробовал и это. Но все тот же @Andreas Gassmann - person ananya; 12.01.2019
comment
Да, это я тоже пробовал. platform.ready().then(() =› {});.Но не работает @Andreas Gassmann - person ananya; 14.01.2019