首页 > 解决方案 > 如何在 Flutter 中读取 SD 卡 ID 号

问题描述

如何在颤振编程中以编程方式读取 SD 卡的 SID 和 CID?

是否有代码或插件可以帮助我获取 SD 卡的 SID 和 CID。

谢谢你。

标签: flutter

解决方案


在颤振中没有直接的方法可以做到这一点,也没有任何颤振包可用,但您可以尝试直接的 android 代码。

尝试这个 :

String path2 = "/sys/block/mmcblk0/device";

BufferedReader serial;
BufferedReader name ;
BufferedReader manfid;
BufferedReader oemid;
BufferedReader mfDate;
BufferedReader CID;

        serial = new BufferedReader(new FileReader(path2 + "/serial"));
        name = new BufferedReader(new FileReader(path2 + "/name"));
        manfid = new BufferedReader(new FileReader(path2 + "/manfid"));
        oemid = new BufferedReader(new FileReader(path2 + "/oemid"));
        mfDate = new BufferedReader(new FileReader(path2 + "/date"));
        CID = new BufferedReader(new FileReader(path2 + "/cid"));

    String sdSerial = serial.readLine();
    String sdName = name.readLine();
    String sdMfId = manfid.readLine();
    String sdOemId = oemid.readLine();
    String sdMfDate = mfDate.readLine();
    String sdCid = CID.readLine();

或者也使用这个

File input = new File("/sys/class/mmc_host/mmc1");
    String cid_directory = null;
    int i = 0;
    File[] sid = input.listFiles();
    for (i = 0; i < sid.length; i++) {
        Log.d(TAG,"sid info "+sid[i]);
        if (sid[i].toString().contains("mmc1:")) {
            cid_directory = sid[i].toString();
            String SID = (String) sid[i].toString().subSequence(cid_directory.length() - 4, cid_directory.length());
            Log.d(TAG, " SID of MMC = " + SID);
            break;
        }
    }
    BufferedReader serial = new BufferedReader(new FileReader(cid_directory + "/serial"));
    BufferedReader name = new BufferedReader(new FileReader(cid_directory + "/name"));
    BufferedReader manfid = new BufferedReader(new FileReader(cid_directory + "/manfid"));
    BufferedReader oemid = new BufferedReader(new FileReader(cid_directory + "/oemid"));
    BufferedReader mfDate = new BufferedReader(new FileReader(cid_directory + "/date"));
    BufferedReader CID = new BufferedReader(new FileReader(cid_directory + "/cid"));


    String sdSerial = serial.readLine();
    String sdName = name.readLine();
    String sdMfId = manfid.readLine();
    String sdOemId = oemid.readLine();
    String sdMfDate = mfDate.readLine();
    String sdCid = CID.readLine();

//确保在使用此代码之前检查 sdcard 是否存在;

7.0 以上:在您从 StorageManager 获得的 StorageVolume 上使用 StorageVolume.getUuid()。

该值是格式化卡时分配的卷 ID,其长度/格式因文件系统类型而异。对于 FAT32,它是 XXXX-XXXX,对于 NTFS,它是一个较长的十六进制字符串,对于内部大容量存储,它返回 null。


推荐阅读