我正在尝试在插入某个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>
编辑:如果忘记提及这种方法不起作用。我没有收到日志消息,并且没有抛出错误。如果不调用活动,这可能吗?
答案 0 :(得分:0)
使用波纹管代码在接收方法中启动服务
context.startService(new Intent(context.getApplicationContext(),MyService.class));