有人知道如何获取设备的序列号吗?
我知道我可以在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平板电脑),那就没关系了。
谢谢!
更新:
Manoj向我指出了一些可能解决问题的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;
}也许有人能帮我?那就太棒了!
发布于 2018-12-21 18:27:57
iOS从不允许应用程序访问任何机密信息,这也适用于序列号。使用Android,您可以使用
android.os.Build.SERIAL我用游乐场做了测试
编辑1:
像三星这样的制造商似乎有着与android.os.Build.SERIAL不同的序列号。看起来与三星非常相关的这是另一个这样的线程,示例代码是用Java编写的。
编辑2:
以下是如何获取三星设备上的序列号
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);
}发布于 2019-10-14 07:30:58
您可以检查属性“ro.erialno”、“ril.erialnumber”、“gsm.sn1”、“sys.serialnumber”
Android:如何以编程方式访问AVD管理器中显示的设备序列号(API版本8)
在我的例子中,三星TAB S2有两个系列。属性'ro.serialno‘比’ril.erialnumber‘更准确。所以我先检查一下。
getSerial() {
if (isAndroid) {
let serialNumber = null;
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);
// Reorder if needed
const props = ['ro.serialno', 'ril.serialnumber', 'gsm.sn1', 'sys.serialnumber'];
for(let i = 0, len = props.length; i < len; i++) {
params[0] = new java.lang.String(props[i]);
serialNumber = getMethod.invoke(SystemProperties, params);
if (serialNumber !== '') {
return serialNumber;
}
}
} catch (err) {
console.error(err);
}
return serialNumber;
}
}完整代码:https://play.nativescript.org/?template=play-tsc&id=ViNo6g&v=6
https://stackoverflow.com/questions/53888745
复制相似问题