有什麼辦法在活動/應用程序中知道(以編程方式)用戶是否已通過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 type-c耳機檢測
- 3. 在android中檢測USB設備
- 4. 檢測USB狀態更改android java
- 5. 如何檢測android上的USB端口?
- 6. 未能檢測USB
- 7. ASP.NET檢測USB驅動器
- 8. 檢測USB設備事件
- 9. 檢測usb pendrive插入iplescript
- 10. 檢測USB電源狀態
- 11. API來檢測USB設備
- 12. 在C++中檢測USB
- 13. USB令牌 - * .dll檢測
- 14. BeagleBone Black未檢測到USB
- 15. 如何檢測作爲USB主機的Android平板電腦中的USB設備?
- 16. Android:如何檢測「打開USB存儲」廣播?
- 17. Xamarin的Android,檢測USB驅動器連接
- 18. android:檢測usb大容量存儲模式
- 19. Android:檢測插入的USB閃存驅動器
- 20. 如何檢測連接到Android手機的USB設備
- 21. 檢測Android是否通過USB連接到計算機
- 22. 如何檢測Android 4.2中的USB連接?
- 23. 是否有可能檢測到Android設備上的USB調試?
- 24. 在Android設備中未檢測到USB WebCam
- 25. 檢測Android設備上的USB設備何時分離
- 26. Android:如何檢測已連接的USB設備?
- 27. Android Honeycomb 3.2通過USB檢測MTP連接
- 28. 我無法使用Android USBManager檢測USB設備
- 29. 檢測某個連接的USB設備
- 30. 檢測插入USB和使用Java
從文檔中不清楚這實際檢測到的內容。在我的情況下,我正在嘗試診斷有故障的USB電纜,有時電源狀態不會改變,但USB會進入和退出 - 後者是我正在嘗試檢測的內容。 – Michael 2014-05-15 20:44:47