如果在没有Activity的情况下插入/移除USB设备,则启动/停止Android服务

时间:2015-02-11 09:59:15

标签: android broadcastreceiver usb

我正在尝试在插入某个USB设备后立即在Android上启动服务。我已经找到了this example,它启动了一个带有intent-filter的(不可见)活动,另一个在另一个上手启动服务。

然而,这在我看来有点hackery,我正在尝试使用以下代码BroadcastReceiver执行相同操作:

public class UsbMessageReceiver extends BroadcastReceiver {
    public UsbMessageReceiver() {
        Log.d("UsbMessageReceiver", "Constructor");
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        Log.d("UsbMessageReceiver", "onReceive");
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

清单:

<receiver
  android:name=".UsbMessageReceiver"
  android:enabled="true"
  android:exported="true" >
  <intent-filter>
      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
  </intent-filter>

  <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />

</receiver>

编辑:如果忘记提及这种方法不起作用。我没有收到日志消息,并且没有抛出错误。如果不调用活动,这可能吗?

1 个答案:

答案 0 :(得分:0)

使用波纹管代码在接收方法中启动服务

context.startService(new Intent(context.getApplicationContext(),MyService.class));