Как получить серийный номер устройства с Nativescript? - PullRequest
0 голосов
/ 21 декабря 2018

Кто-нибудь знает, как получить серийный номер устройства?

Я знаю, что могу сделать это в приложении NativeScript-5 (TypeScript):

import { Page } from "tns-core-modules/ui/page";    
import * as platformModule from "tns-core-modules/platform";

export function onNavigatingTo(args: EventData) {
    let page = <Page>args.object;

    console.log("Manufacturer:" + platformModule.device.manufacturer);
    console.log("Model:" + platformModule.device.model);
    console.log("UUID:" + platformModule.device.uuid);
}

Но я не смогнайти любое свойство для серийного номера устройства.У кого-нибудь есть идея?Ничего страшного, если ваше решение распространяется только на Android (поскольку мой проект ориентирован только на планшеты Android).

Спасибо!

Обновление:

Маной указал мнев некоторый код Java, который, вероятно, решает мою проблему.Однако я не смог маршалировать следующий код в TypeScript.

      public static String getManufacturerSerialNumber() { 
          String serial = null; 
          try {
               Class<?> c = Class.forName("android.os.SystemProperties");
               Method get = c.getMethod("get", String.class, String.class);
               serial = (String) get.invoke(c, "ril.serialnumber", "unknown");
          } catch (Exception ignored) {}
          return serial;
      }

Может быть, кто-нибудь может мне помочь?Это было бы здорово!

1 Ответ

0 голосов
/ 21 декабря 2018

iOS никогда не позволяет приложениям получать доступ к конфиденциальной информации, в том числе и к серийному номеру.С Android вы можете прочитать серийный номер с помощью

android.os.Build.SERIAL

Я тестировал его на Детская площадка

Редактировать 1:

Производители, подобные Samsung, похоже, имеют другой серийный номер, который отличается от android.os.Build.SERIAL . Вот еще один SO поток , который кажется очень актуальным для Samsung, пример кода написан на Java.

Редактировать 2:

Вот какВы можете получить серийный номер на устройствах Samsung

        let serialNumber = ''; 
        try {
            const cl = application.android.context.getClassLoader();
            const SystemProperties = cl.loadClass('android.os.SystemProperties');

            const paramTypes = (<any>Array).create(java.lang.Class, 2);
            paramTypes[0] = java.lang.String.class;
            paramTypes[1] = java.lang.String.class;
            const getMethod = SystemProperties.getMethod('get', paramTypes);

            const params = (<any>Array).create(java.lang.Object, 2);
            params[0] = new java.lang.String('ril.serialnumber');
            params[1] = new java.lang.String('unknown');

            serialNumber = getMethod.invoke(SystemProperties, params);
        } catch (err) {
            console.error(err);
        }

Обновленная игровая площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...