Android应用获取设备序列号

系统恢复出厂设置,刷机,均没改变此SN.
1.
使用adb get-serialno 可以获取 此值
$adb get-serialno
0288504643dfbxxx

2.
$adb shell
$getprop
.... ...
[ro.boot.serialno]: [0288504643dfbxxx]
....
[ro.serialno]: [0288504643dfbxxx]

3.
Java获取android.os.SystemProperties.get() 读取系统属性,的方法是系统隐藏,无法直接使用.
我们可以使用Java反射:
        String []propertys = {"ro.boot.serialno", "ro.serialno"};   
        for (String key : propertys){  
//          String v1 = android.os.SystemProperties.get(key);  
            String v2 = getAndroidOsSystemProperties(key);  
            Log.e("", "get " + key + " : " + v1);  
        }  
        

private static String getAndroidOsSystemProperties(String key) {
        String ret = "";
        try {
            Method systemProperties_get = Class.forName("android.os.SystemProperties").getMethod("get", String.class);
            if(!systemProperties_get.isAccessible()){
                systemProperties_get.setAccessible(true);
            }
            ret = (String) systemProperties_get.invoke(null, key);
        } catch (Exception e) {
            e.printStackTrace();
        }

        if(null == ret){
            ret = "";
        }
        return ret;
}
    
4.
android.os.build.serial 在API 9 中引入,如果低于9的系统可以通过这个方法获取这个信息值
public static String getDeviceSerial() {
        String serial = "unknown";
        try {
            Class clazz = Class.forName("android.os.Build");
            Class paraTypes = Class.forName("java.lang.String");
            Method method = clazz.getDeclaredMethod("getString", paraTypes);
            if (!method.isAccessible()) {
                method.setAccessible(true);
            }
            serial = (String)method.invoke(null, "ro.serialno");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return serial;
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,不能直接获取 Android 设备序列号。这是因为 JavaScript 运行在浏览器中,无法直接访问设备的底层硬件信息。不过,你可以通过以下方式来获取 Android 设备序列号: 1. 使用 Android 应用程序开发工具包(Android SDK)提供的工具来获取 Android 设备序列号。具体步骤如下: - 在 Android 设备上打开 "开发者选项"(如果没有开启,可以在设置中找到 "关于手机" -> "版本号",点击多次即可开启开发者选项)。 - 连接 Android 设备到电脑上,并打开命令行工具。 - 使用 adb 命令来获取设备序列号:`adb devices`。该命令会列出已连接的设备,并显示它们的序列号。 在 JavaScript 中,你可以通过调用 `child_process` 模块来执行命令并获取输出结果。例如,可以使用以下代码来获取 Android 设备序列号: ```javascript const { exec } = require('child_process'); exec('adb devices', (err, stdout, stderr) => { if (err) { console.error(err); return; } // 分割输出结果,获取设备序列号 const output = stdout.trim().split('\n'); if (output.length > 1) { const device = output[1].split('\t')[0]; console.log(`Device serial number: ${device}`); } }); ``` 2. 在 Android 应用程序中使用 Java 代码获取设备序列号,并通过 WebView 的 JavaScript 接口将序列号传递给 JavaScript。具体步骤如下: - 在 Android 应用程序中添加以下代码来获取设备序列号: ```java String serialNumber = Build.SERIAL; ``` - 在 WebView 中注册 JavaScript 接口,并通过接口将序列号传递给 JavaScript: ```java webView.addJavascriptInterface(new Object() { @JavascriptInterface public String getDeviceSerialNumber() { return Build.SERIAL; } }, "MyApp"); ``` - 在 JavaScript 中调用该接口来获取设备序列号: ```javascript const deviceSerialNumber = window.MyApp.getDeviceSerialNumber(); console.log(`Device serial number: ${deviceSerialNumber}`); ``` 需要注意的是,方法一需要用户连接 Android 设备到电脑上,并且需要安装 Android SDK。方法二需要在 Android 应用程序中添加代码,并且需要用户安装该应用程序。此外,需要注意保护用户隐私,不要随意获取设备信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值