You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取安卓设备自身的ProductID(PID)和VendorID(VID)

Android 获取设备自身USB VID/PID 实现方案

你需要获取的是安卓设备作为USB从设备(比如连接电脑时被识别到的VID/PID),系统没有公开的专门API直接返回该数值,可通过以下两种路径实现:

方案1:读取系统内置属性(无需权限,兼容性最好)

安卓系统会默认将设备自身的USB VID/PID存储在系统属性中,不同厂商的属性key会略有差异,常用的读取代码如下:

import android.os.Build;
import android.text.TextUtils;
import java.lang.reflect.Method;

// 读取设备VID
public static String getDeviceVid() {
    try {
        Method getPropMethod = Build.class.getMethod("get", String.class, String.class);
        // 优先读取通用key,取不到可根据自身机型适配ro.product.vid、ro.config.usb_vid等其他key
        String vid = (String) getPropMethod.invoke(null, "ro.usb.vid", "");
        if (TextUtils.isEmpty(vid)) {
            vid = (String) getPropMethod.invoke(null, "ro.product.vid", "");
        }
        return vid;
    } catch (Exception e) {
        return "";
    }
}

// 读取设备PID
public static String getDevicePid() {
    try {
        Method getPropMethod = Build.class.getMethod("get", String.class, String.class);
        // 优先读取通用key,取不到可根据自身机型适配ro.product.pid、ro.config.usb_pid等其他key
        String pid = (String) getPropMethod.invoke(null, "ro.usb.pid", "");
        if (TextUtils.isEmpty(pid)) {
            pid = (String) getPropMethod.invoke(null, "ro.product.pid", "");
        }
        return pid;
    } catch (Exception e) {
        return "";
    }
}

调试场景下可直接在adb shell执行getprop | grep usb即可快速查看当前设备的VID/PID对应的属性key和数值。

方案2:读取sysfs节点(部分机型需要root权限)

部分设备会把USB配置信息存在sysfs路径下,直接读取对应节点内容即可获取数值,通用路径如下:

  • VID节点:/sys/class/android_usb/android0/idVendor
  • PID节点:/sys/class/android_usb/android0/idProduct

注意:不同设备的sysfs路径可能存在差异,该方案通用性不如读取系统属性的方案,仅作为备选。另外如果设备当前开启了USB调试、MTP、PTP等不同的USB功能,PID可能会动态变化,需要固定PID的场景要提前确认设备的USB功能配置是否固定。

内容的提问来源于stack exchange,提问作者Mohammad Elsayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:24:04