【问题标题】:How can I detect usb connection in Android 4.2?如何在 Android 4.2 中检测 USB 连接?
【发布时间】:2013-04-26 02:54:29
【问题描述】:

我使用ACTION_MEDIA_MOUNTEDACTION_MEDIA_UNMOUNTEDNexus 4 上检测到USB 连接,但我无法接收到任何广播信号。

这是我的广播接收器代码:

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter.addDataScheme("file");

debugReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();
        if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
            debugOn = true;
        } else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {
            debugOn = false;
        }
    }
};
registerReceiver(debugReceiver, filter);

有什么想法吗?我还搜索了其他问题;他们说如果我添加

"filter.addDataScheme("file");"

我会收到信号,但我试过了,没有收到任何信号。

【问题讨论】:

    标签: android broadcastreceiver nexus-4


    【解决方案1】:

    使用UsbManager.ACTION_USB_DEVICE_ATTACHEDUsbManager.ACTION_USB_DEVICE_DETACHED 作为您的意图过滤器。

    要检查与 PC 的连接,请使用 Intent.ACTION_BATTERY_CHANGEDonReceive intent.getInt(BatteryManager.EXTRA_PLUGGED) 并查看值是否为 BatteryManager.BATTERY_PLUGGED_USB

    【讨论】:

    • 我尝试了你的方法,但它仍然无法得到任何东西。我需要删除filter.addDataScheme("file") 吗?我也试了Intent.ACTION_POWER_CONNECTEDIntent.ACTION_POWER_DISCONNECTED,都可以收到。但我想检测手机连接到 PC 的操作。
    • 嗨,霍恩。这种方法可能无法区分PC连接和普通充电连接,因为如果我将手机连接到壁式充电器,intent.getInt(BatteryManager.EXTRA_PLUGGED)的值仍然等于BatteryManager.BATTERY_PLUGGED_USB
    • 好吧,在这种情况下注册 Intent.ACTION_POWER_CONNECTED 应该在正常充电时显示。
    • 如何通过一个返回真/假的函数来检查设备当前是否已连接?编辑:没关系,在这里:stackoverflow.com/a/19229024/878126
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2011-11-03
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多