有什麼辦法在活動/應用程序中知道(以編程方式)用戶是否已通過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