有什么办法在活动/应用程序中知道(以编程方式)用户是否已通过USB将手机连接到PC?Android:检测USB
回答
有人使用UMS_CONNECTED
被弃用的最新版本的Android 的其他问题与建议它不与MTP功能的设备工作
其他建议选用BatteryManager
的,更确切地说ACTION_BATTERY_CHANGED
以及BATTERY_PLUGGED_AC
和BATTERY_PLUGGED_USB
这是完美的,如果你想取消检测设备的电池或充电状态,但不是USB连接的一个很好的指示器。 使用电池管理器很容易在老款Android平板电脑上出现故障,如XOOM,ICONIA选项卡A510和旧款华硕平板电脑。
纯粹的检测设备被插入PC可以上: 使用android.hardware.usb.action.USB_STATE
和connected
到位的BatteryManager
东西
代码示例
public static boolean isConnected(Context context) {
intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
return intent.getExtras().getBoolean("connected");
}
希望这有助于
之所以能够通过下面注册一个广播接收器检测到USB连接,
IntentFilter mIntentFilter = new IntentFilter(Intent.ACTION_UMS_CONNECTED); BroadcastReceiver bd = new intentReceiver(); registerReceiver(bd, mIntentFilter);
我'intentReceiver'出错,所以你可以详细说明 – 2012-02-13 06:35:57
这对我不起作用。 Android 2。2,设备=> HTC Desire – 2012-04-11 03:30:55
如果设备使用的是MTP协议,而不是UMS协议,则不起作用(例如Galaxy Nexus使用MTP协议) – darkheir 2012-07-19 15:32:16
的Manifest.xml:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.ums_connected" />
</intent-filter>
</receiver>
MyReceiver:
public class MyReceiver extends BroadcastReceiver{
if (intent.getAction().equalsIgnoreCase(
"android.intent.action.UMS_CONNECTED")) {...}
}
This不适合我。 Android 2.2,设备=> HTC Desire – 2012-04-11 03:29:53
@Heshan请参阅更新的答案。 – 66CLSjY 2012-08-07 13:12:06
这个MyReceiver代码甚至没有意义..如果在类定义里面? thanx! – 2016-12-30 12:23:11
如果你想做的是检测你是否有权访问SD卡,然后以下将工作:
private boolean canWriteToFlash() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// Read only isn't good enough
return false;
} else {
return false;
}
}
thanx!这是我需要的代码 – Maep 2011-11-02 08:00:25
检查android.intent.action.ums_connected
时主要的问题是使用MTP协议的设备(如Samsung Nexus Galaxy)没有收到此广播。
这就是为什么我使用的是另一种方式,当智能手机插入或拔出来检测:
我检查batery状态。当电池发生事件时,有一个叫做ACTION_BATTERY_CHANGED
的意图。在这个意图中有一些额外的领域包含一些信息。其中之一是EXTRA_PLUGGED
:
Indicating whether the device is plugged in to a power source; 0 means it is on battery, other constants are different types of power sources.
其他常数BATTERY_PLUGGED_AC
和BATTERY_PLUGGED_USB
所以用这个广播,你可以知道,如果智能手机已在USB被插入,即使它使用MTP协议。
要知道,如果智能手机被拔掉你探微必须检查时,从BATTERY_PLUGGED_USB
的EXTRA_PLUGGED
值更改为0
这不适用于像XOOM这样的平板电脑,其中电源和USB是两个不同的端口 – 2012-10-24 03:21:05
- 1. 检测USB设备android
- 2. 如何检测android上的USB端口?
- 3. API来检测USB设备
- 4. 检测USB电源状态
- 5. USB令牌 - * .dll检测
- 6. 检测usb pendrive插入iplescript
- 7. Android Honeycomb 3.2通过USB检测MTP连接
- 8. 如何检测Android 4.2中的USB连接?
- 9. Xamarin的Android,检测USB驱动器连接
- 10. android:检测usb大容量存储模式
- 11. 在Android设备中未检测到USB WebCam
- 12. Android:如何检测“打开USB存储”广播?
- 13. 在Windows上检测插入的USB
- 14. USB设备未正确检测到
- 15. 检测USB设备并显示内容
- 16. USB未检测到i.mx 287 EVK(FreeScale)板
- 17. 检测USB连接 - C#.Net CF 3.5
- 18. Tkinter和USB设备的检测
- 19. 检测STM32L442 USB断开连接
- 20. 是否有Windows API检测USB过流?
- 21. 如何在imac中检测USB插入?
- 22. 检查Android上的USB连接状态
- 23. 检测在Android
- 24. Android Fall检测
- 25. Android USB I/O
- 26. Android USB调试
- 27. Android USB编程
- 28. android adb usb speed
- 29. Android USB通讯
- 30. Android手机usb
从文档中不清楚这实际检测到的内容。在我的情况下,我正在尝试诊断有故障的USB电缆,有时电源状态不会改变,但USB会进入和退出 - 后者是我正在尝试检测的内容。 – Michael 2014-05-15 20:44:47