Ras*_*sel 5 android broadcastreceiver
public class BroadcastTest extends Activity {
BroadcastReceiver receiver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
receiver=new Receiver(this);
registerReceiver(receiver,new IntentFilter(Intent.ACTION_CALL_BUTTON));
}catch(Exception e){
Log.d("error",e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
和另一堂课
public class Receiver extends BroadcastReceiver{
public Receiver(BroadcastTest broadcastTest) {
// TODO Auto-generated constructor stub
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.d("Fired","Hi");
}
}
Run Code Online (Sandbox Code Playgroud)
当按下呼叫按钮时,接收器类的onReceive方法应该被调用吗?如果是,那么它就没有调用.我在这里做错了什么.按下呼叫按钮时我没有在logcat中看到任何东西.谢谢提前
这篇博客文章描述了AlarmManager和BroadcastReceiver的一些常见缺陷.包括的例子!希望有所帮助.
编辑:一些常见的陷阱:
接收器未在AndroidManifest.xml中声明
在Manifest文件中声明接收者:
<receiver android:name="net.fusonic.testapp.receivers.TestAlarmReceiver"></receiver>
Run Code Online (Sandbox Code Playgroud)清单中的接收器xml拼写错误
永远记住整个Android系统区分大小写.因此,请检查AndroidMainfest.xml中的拼写是否正确.请记住,如果使用".receivers.TestAlarmReceiver"之类的简短形式,eclipse重构函数不会正确更改packagename.
PendingIntent requestCode丢失了吗?
如果您为接收器创建了PendingIntent,请添加requestCode- 即使它是随机数!没有你的"onReceive"代码永远不会被调用!
AVD运行很长时间(非常棘手)
请注意使用AVD,特别是如果您使用"REALTIME_WAKEUP"和SystemClock ...因此,如果您尝试测试警报,请重新启动AVD或在真实设备上进行测试!
| 归档时间: |
|
| 查看次数: |
6857 次 |
| 最近记录: |