我的代码遗失了一些东西,需要你的眼睛找到。
我创建了一个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");
}
}
我的清单是:
<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)。
我知道我可以通过清单或programmaticaly注册BR。但不确定如何实施。
在我的活动中,我添加了
USBOnReceiver myReceiver = new USBOnReceiver();
但它看起来如此无关和无用: - /
在这里欣赏你的眼睛。
答案 0 :(得分:2)
您的代码似乎已完成。如果我没错的话, 你唯一的问题是:你在清单中写了接收器而不是接收器。 因此,BroadcastReceiver从未正确注册。
关于在代码中注册的主题:
是的,这是可能的。只需创建接收器的实例即可 并使用Context.registerReceiver(mReceiver,new IntentFilter(...))。
如果您已在清单中注册,则无需执行此操作。 BroadcastReceivers仅用于执行onReceive()。因此 系统会创建实例并在之后将其杀死。