检测设备文件系统何时通过MTP暴露给主机

时间:2018-08-10 17:51:52

标签: java android usb mtp

我有一个相当简单的问题。我的应用程序在存储卡上创建文件,然后由台式计算机通过MTP协议复制这些文件。我需要检测何时使用USB电缆将设备连接到计算机,以及是否未激活MTP文件交换模式,我需要请用户激活它。

我当前的尝试是这样的:

Intent usbConnCheckIntent = mContext.registerReceiver(this, new IntentFilter("android.hardware.usb.action.USB_STATE"));

@Override
public void onReceive(Context context, Intent intent) {
    mCurrentlyConnected = (intent.getExtras().getBoolean("connected"));   

    mIsMTPMode = (intent.getExtras().getBoolean("mtp"));

    ...

}

(来自https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/hardware/usb/UsbManager.java的常量)

我成功接收了USB连接/断开连接事件,但是即使设备以充电模式连接,MTP也会始终返回true。我怀疑这是因为出于某种原因始终启用MTP模式(因为可以在Windows资源管理器中看到该设备,并且我的桌面应用程序也将其检测为MTP设备),但是文件系统暴露被视为另一个事件。如何检测不仅连接了MTP,而且还暴露了文件系统?

我正在小米MI 2设备上进行测试,但其他设备也存在相同的问题。

0 个答案:

没有答案