usbmanager.getDeviceList一直检测不到设备

1. 首先保证我的程序没有问题,在昂达的平板上测试通过,但在台电平板一直检测不到设备

2. 把你的设备获取root权限

3. 在

/system/etc/permissions文件夹下创建文件android.hardware.usb.host.xml
(如果不获取root权限,看不到system文件夹,反正我的看不到)
文件内容为:
<permissions>
 <feature name="android.hardware.usb.host"/>
</permissions>
4. 在同一目录下,找到文件
handheld_core_hardware.xml or tablet_core_hardware.xml (我的是后者),然后在里面添加权限,添加在<permissions>里
<feature name="android.hardware.usb.host" />
亲测成功,留作笔记,希望对别人也有帮助
原文连接点击打开链接http://stackoverflow.com/questions/11183792/android-usb-host-and-hidden-devices

Android Studio 中编写上述代码,你可以在一个 Activity 或者一个 Fragment 中进行。以下是一个示例: ```java import android.Manifest; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.util.HashMap; import java.util.Iterator; public class MainActivity extends AppCompatActivity { private UsbManager usbManager; private BroadcastReceiver usbReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取 USBManager 对象 usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); // 遍历已连接的 USB 设备 HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList(); Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); while (deviceIterator.hasNext()) { UsbDevice device = deviceIterator.next(); // 获取设备的 VID 和 PID int vid = device.getVendorId(); int pid = device.getProductId(); // 在这里可以根据 VID 和 PID 进行相应的逻辑处理 // 请求 USB 权限 PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.example.USB_PERMISSION"), 0); usbManager.requestPermission(device, permissionIntent); } // 创建 BroadcastReceiver 来监听 USB 权限的授权结果 usbReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if ("com.example.USB_PERMISSION".equals(action)) { synchronized (this) { UsbDevice device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { if (device != null) { // USB 权限已授权,可以进行相应的操作 } } else { Log.d("USB", "Permission denied for device " + device); } } } } }; // 注册 BroadcastReceiver IntentFilter filter = new IntentFilter("com.example.USB_PERMISSION"); registerReceiver(usbReceiver, filter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(usbReceiver); } } ``` 在此示例中,代码位于一个名为 `MainActivity` 的活动中。你可以根据需要修改活动名称和布局文件。在 `onCreate()` 方法中,我们获取了 `UsbManager` 对象并遍历已连接的 USB 设备。我们还创建了一个 `BroadcastReceiver` 来监听 USB 权限的授权结果,并在 `onReceive()` 方法中处理授权结果。在 `onDestroy()` 方法中,我们取消了注册 `BroadcastReceiver`。 请注意,在运行此代码之前,你需要在 AndroidManifest.xml 文件中添加相应的权限声明。确保添加以下权限声明: ```xml <uses-permission android:name="android.permission.USB_PERMISSION" /> ``` 这样,你就可以在 Android Studio 中编写并运行这段代码了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值