Usb设备为空,即使插入Usb电缆移动



尝试在插入手机时获得usb设备。我试着用手机插上电脑,也插上了移动电源。但是设备总是返回null。我不知道这是不是因为许可的问题。我很少看到类似的问题,关于设备总是得到null。但我看不到任何解决办法。

AndroidManifest.xml

<intent-filter>
<action android:name="anandroid.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

device_filter.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1234" product-id="5678" class="255" subclass="66" protocol="1" />
</resources>

MainActivity.kt

class MainActivity : AppCompatActivity() {
private val ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"
private val ACTION_USB_DETACHED = "com.android.example.USB_DEVICE.DETACHED"
private val ACTION_USB_ATTACHED = "com.android.example.USB_DEVICE.DETACHED"
//USB
// var UsbReceiver :UsbReceiver? = null
var filter: IntentFilter? = null
var manager: UsbManager? = null
var permissionIntent: PendingIntent? = null
var device: UsbDevice? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
filter = IntentFilter()
filter!!.addAction(ACTION_USB_ATTACHED)
filter!!.addAction(ACTION_USB_DETACHED)
registerReceiver(usbReceiver, filter)
manager = getSystemService(Context.USB_SERVICE) as UsbManager
permissionIntent = PendingIntent.getBroadcast(
this, 0, Intent(ACTION_USB_PERMISSION), PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
device = intent?.getParcelableExtra<UsbDevice>(UsbManager.EXTRA_DEVICE)
val deviceList = manager!!.deviceList
deviceList // Just Tried here to see if get deviceList
if (device != null){
if (!manager!!.hasPermission(device)){
device?.let {
requestPermissions(it)
}
}
}
connectUsb.start()
}
val connectUsb = thread(start = false, priority = 10)
{
Thread.sleep(300)
this@MainActivity.runOnUiThread(java.lang.Runnable {
if (device != null){
if (!manager!!.hasPermission(device)){
device?.let {
requestPermissions(it)
}
} else {
device
}
} else {
Toast.makeText(applicationContext, "this device is null", Toast.LENGTH_SHORT).show()
}
})
}
private var usbReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action.equals(ACTION_USB_DETACHED))
{}
if (intent.action.equals(ACTION_USB_ATTACHED))
{}
}
private fun requestPermissions(device: UsbDevice) {
manager?.requestPermission(device, permissionIntent)
}
}

我写了这篇文章,如果有人将来看,问题不在于代码。我试图将手机插入电脑,并期望有电脑作为usb设备。我买了一个非处方适配器,把我的USB硬盘插到手机上。现在显示硬盘在deviceList

最新更新