在Broadcastreceiver中检测USB - 我错过了什么?

时间:2011-06-26 19:54:16

标签: android android-manifest broadcastreceiver

我的代码遗失了一些东西,需要你的眼睛找到。

我创建了一个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();

但它看起来如此无关和无用: - /

在这里欣赏你的眼睛。

1 个答案:

答案 0 :(得分:2)

您的代码似乎已完成。如果我没错的话, 你唯一的问题是:你在清单中写了接收器而不是接收器。 因此,BroadcastReceiver从未正确注册。

关于在代码中注册的主题:

是的,这是可能的。只需创建接收器的实例即可 并使用Context.registerReceiver(mReceiver,new IntentFilter(...))。

如果您已在清单中注册,则无需执行此操作。 BroadcastReceivers仅用于执行onReceive()。因此 系统会创建实例并在之后将其杀死。