USB连接通知

Aja*_*ngh 5 android

如果用户通过USB线连接电话,我们可以收到通知

小智 5

实际上有一个广播事件;如果您在应用程序设置中打开了“调试”,那么当您插入 USB 时,您将在通知栏上看到一个错误。以下是其工作原理的示例;

public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    // UsbManager.ACTION_USB_STATE -> "android.hardware.usb.action.USB_STATE" actually
    if (action.equals(UsbManager.ACTION_USB_STATE)) {
        Bundle extras = intent.getExtras();
        // UsbManager.USB_CONNECTED -> "connected" actually
        usbConnected = extras.getBoolean(UsbManager.USB_CONNECTED);
        ...
Run Code Online (Sandbox Code Playgroud)

您可以在framework/base/service/java/com/android/server/NotificationManagerService.java 中找到它。希望这可以帮助。


Wil*_*ate 4

阿杰,

我无法找到任何特定于“USB 连接”的内容,但在这种情况下,根据您想要完成的任务,可能会对一些广播操作感兴趣:

似乎没有特定于 USB 插入的广播操作,您也可以尝试执行以下操作:

但对于连接到计算机的 USB 和仅连接到电源的 USB 来说,这种情况都会发生...

有趣的是,我还发现这个链接只是简单地说明“USB已连接”没有广播操作。

在这种情况下你可能不走运:-\

  • 似乎 ACTION_UMS_CONNECTED 在更高版本的 Android 中已停止发送(至少从 ICS 是如此)。但是,从 Gingerbread 开始,您可以收听“android.hardware.usb.action.USB_STATE”,每当建立 USB 连接时都会广播该广播,至少就我的实验而言是这样。有一个额外的布尔值“connected”,告诉你它是连接还是断开。因此,如果您同时监听 ACTION_UMS_CONNECTED 等,您的代码应该适用于所有版本。 (3认同)
  • 祝你好运。如果您设法找到一种未记录的方法来接收 USB 连接操作,请在原始问题中报告您的发现。 (2认同)