虽然我已经注册了,但我无法接收广播意图。你能否发现错误。非常感谢你。我尝试使用日志消息,但它从未到达广播接收器类的onReceive()。
这是我发送广播的类
public class ServiceDemoActivity extends Activity {
Button startButton,stopButton,pauseButton;
final String musicIntentAction="com.CompetenceProject.Musicfilter";
Intent musicIntent=new Intent();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton=(Button)findViewById(R.id.startButton);
stopButton=(Button)findViewById(R.id.Stopbutton);
pauseButton=(Button)findViewById(R.id.Pausebutton);
musicIntent.setAction(musicIntentAction);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.w("DEBUG", "Came to StartButton");
musicIntent.putExtra("Message","start");
sendBroadcast(musicIntent);
Toast.makeText(getApplicationContext(), "starBroadcaseSent",1000).show();
}
});
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.w("DEBUG", "Came to StopButton");
musicIntent.putExtra("Message","stop");
sendBroadcast(musicIntent);
Toast.makeText(getApplicationContext(), "stopBroadcaseSent",1000).show();
}
});
pauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.w("DEBUG", "Came to PauseButton");
musicIntent.putExtra("Message","pause");
sendBroadcast(musicIntent);
Toast.makeText(getApplicationContext(), "PauseBroadcaseSent",1000).show();
}
});
}
}
这是收听广播的班级:
public class MusicBroadcsatListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.w("DEBUG", "Came to BroadCast OnRecieve");
Bundle extras = intent.getExtras();
String res=extras.getString("Message");
Toast.makeText(context, "Intent Extra is "+res, 1000).show();
Log.v("BroadCase","true");
System.out.println("Broadcast came here");
if(res.equalsIgnoreCase("start"))
Toast.makeText(context, "start", 1000).show();
else if(res.equalsIgnoreCase("pause"))
Toast.makeText(context, "pause", 1000).show();
else if (res.equalsIgnoreCase("stop"))
Toast.makeText(context, "stop", 1000).show();
}
}
这是Androidmanifest:
<activity
android:label="@string/app_name"
android:name=".ServiceDemoActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<receiver android:name=".MusicBroadcsatListener" android:enabled="true">
<intent-filter>
<action android:name="com.CompetenceProject.Musicfilter"></action>
</intent-filter>
</receiver>
谢谢。
答案 0 :(得分:0)
我要做的第一件事就是检查你的Manifest.xml文件中的这个拼写错误。我在这里看不到你的接收器类的名字,但如果它的名字中有“广播”,你拼写错误的“广播” - “MusicBroadcsatListenter” - 在manifest.xml文件中:
<receiver android:name=".MusicBroadcsatListener" android:enabled="true">
答案 1 :(得分:0)
要进行测试,您必须在执行活动之前执行广播接收器 - 在同一设备上 - 因为接收器需要运行。我不确定最好的方法,但出于好奇,我将你的代码复制并粘贴到Eclipse中,分成两个独立的项目 - 一个用于接收器,一个用于活动。我执行了接收器项目,然后是活动项目,你的代码运行正常。如果有人有更好的方法来测试这个,请发布,因为我也想知道。
答案 2 :(得分:0)
我自己找到了解决方案。我把接收器放在活动标签内。谢谢大家的支持。