AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 568921
Accepted
Tommy Brunn
Tommy Brunn
Asked: 2015-01-05 13:54:28 +0800 CST2015-01-05 13:54:28 +0800 CST 2015-01-05 13:54:28 +0800 CST

在 QML 中获取唯一的设备 ID

  • 772

我需要为设备获取唯一 ID。我最初以为我会使用设备的 imei,但似乎没有返回任何内容:

import QtSystemInfo 5.0

DeviceInfo {
    id: device
}

Component.onCompleted {
    console.log(device.imei(0)) // Returns nothing
}

这可能是也可能不是错误:https ://bugs.launchpad.net/ubuntu/+source/qtsystems-opensource-src/+bug/1197542但由于一年没有任何更新,我希望也许我可以使用其他一些信息。

那么,有谁知道我如何获得设备的唯一 ID?它必须是持久的,但除了作为标识符之外,它可能完全没有意义。

application-development
  • 3 3 个回答
  • 1492 Views

3 个回答

  • Voted
  1. Best Answer
    Tommy Brunn
    2015-01-11T03:46:38+08:002015-01-11T03:46:38+08:00

    正如 dobey 所说,无法在受限应用程序中获取 IMEI,因此我放弃了尝试根据设备本身获取 ID。相反,我只是生成一个 UUID 并将其存储在 U1DB 中。

    // uuid.js
    .pragma library
    
    function generateUUID(){
        var d = new Date().getTime();
        var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
            var r = (d + Math.random()*16)%16 | 0;
            d = Math.floor(d/16);
            return (c === 'x' ? r : (r&0x3|0x8)).toString(16);
        });
        return uuid;
    };
    
    // Elsewhere
    U1db.Database {
        id: db
        path: "settings"
    }
    
    U1db.Document {
        id: user
        database: db
        docId: "user"
        create: true
        defaults: {
            "userId": ""
        }
    }
    
    // Somewhere I need the userId
    Item {
        id: thing
    
        Component.onCompleted: {
            userId: user.contents.userId
            if (!userId) {
                 userId = Uuid.generateUUID()
                 var userContents = user.contents
                 userContents.userId = userId
                 user.contents = userContents
            }
            return userId
        }
    }
    
    • 2
  2. dobey
    2015-01-06T07:00:09+08:002015-01-06T07:00:09+08:00

    这确实有效。这就是ubuntu-system-settings获取 IMEI 的方式。

    相反,您的问题可能是 console.log() 不会转到您期望看到的任何控制台输出,或者您运行它的系统没有可用的 IMEI(这需要 GSM 调制解调器)。在系统设置的关于页面中也显示了一个序列号,但它是通过 C++ 插件读取的,您可能无法直接从您的应用程序中使用它,并且可能需要重新实现。

    读取设备信息目前仅限于系统不受限制的应用程序。当前没有可用于在受限应用程序中读取 IMEI 的 policy_group。

    • 1
  3. tanius
    2020-06-24T08:24:16+08:002020-06-24T08:24:16+08:00

    在更新的版本中,DeviceInfoQML 类型有一个uniqueID属性:

    DeviceInfo {
        id: device
    }
    
    Component.onCompleted {
        console.log(device.uniqueID)
    }
    

    文档:QML DeviceInfo 元素:属性 uniqueID。(代码未经测试,只是在文档中看到了这一点。)

    • 0

相关问题

  • 应用程序通常在哪里存储数据?

  • 我应该为 Vala 使用哪个 IDE?

  • 安装用户应用程序时,“最佳实践”建议它们位于何处?

  • 为 Python 应用程序设置构建系统

  • 如何在 Ubuntu 上开发 .NET 应用程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve