我的代码遗漏了一些东西,需要你的眼睛来定位。
我创建了一个 USBOnReciever 广播接收器。
public class USBOnReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "Phone was connected to power" ,Toast.LENGTH_LONG).show();
Log.d("tag", "Phone was connected to power");
}
}
我的 list 是:
<application>
<receiver android:name=".USBOnReceiver" android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.UMS_CONNECTED" />
</intent-filter>
</receiver>
</application>
这是我卡住的时候。 连接 USB 时似乎没有任何反应(我也尝试使用 power_connected)。
我知道我可以通过 list 或编程方式注册 BR。但不确定如何实现。
在我的 Activity 中我添加了
USBOnReceiver myReceiver = new USBOnReceiver();
但它看起来如此不连贯且毫无用处:-/
在此感谢您的关注。
最佳答案
您的代码看起来很完整。如果我没错的话, 您遇到的唯一问题是:您在 list 中写了 reciever 而不是 receiver。 所以 BroadcastReceiver 从未正确注册。
进入代码注册的话题:
是的,这是可能的。只需创建接收器的一个实例 并使用 Context.registerReceiver(mReceiver, new IntentFilter(...))。
如果您已在 list 中注册,则无需这样做。 BroadcastReceivers 仅在执行 onReceive() 时有效。所以 系统创建实例并在之后杀死它们。
关于android - 在 Broadcastreceiver 中检测 USB - 我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486339/