Android onReceive方法没有';我没接到电话

Android onReceive方法没有';我没接到电话,android,broadcastreceiver,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

还有一节课

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());
    }
  }
}
当我按下call按钮时,是否应该调用receiver类的onReceive方法?如果是,则它没有得到调用。我在这里做错了什么。当按下call按钮时,我在logcat中没有看到任何东西。提前感谢这描述了AlarmManager和BroadcastReceiver的一些常见陷阱。例子包括!希望有帮助

编辑: 一些常见的陷阱:

  • 未在AndroidManifest.xml中声明接收方

    在清单文件中声明接收方:

    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");
    }
    }
    
    
    
  • 清单xml中的接收方拼写错误

    永远记住,整个Android系统都是区分大小写的。因此,请检查AndroidMainfest.xml中的拼写是否正确。请记住,如果使用“.receivers.TestAlarmReceiver”这样的缩写形式,eclipse重构函数不会正确更改packagename

  • PendingEvent请求代码丢失

    如果你为你的接收者创建了一个PendingEvent,请添加一个
    requestCode
    ——即使它是一个随机数!如果没有你的“onReceive”代码,永远不会被呼叫

  • AVD运行时间长(非常棘手)

    请注意使用AVD,尤其是在您使用“实时唤醒”和系统时钟的情况下……因此,如果您尝试测试闹钟,请重新启动AVD或在真实设备上测试


  • 在堆栈溢出的情况下,不赞成简单地将链接放在自己的博客帖子上就有可能出现重复。为什么不在这里扩展您的答案来描述这些陷阱,而不是强迫每个人都访问您的网站?因为我必须在这里写相同的内容..->这是更好的解决方案吗?是的,这更好,因为现在有人d这个问题可以在这里阅读你的答案,而不必转到另一个网站。此外,如果你的网站在将来某个时候移动、更改链接位置或宕机,会发生什么情况?可以派人到你的网站获取补充信息,只要你在这里提供你的问题答案的主体。这对我来说是有效的简而言之,
    .AlarmManagerBroadCastreceRiver
    我已经将完整路径
    放在rss.univ.alarmManager.AlarmManagerBroadCastreceRiver
    aa上,链接刚刚断开…(这就是为什么在这里包含一些内容是个好主意)。
    <receiver android:name="net.fusonic.testapp.receivers.TestAlarmReceiver"></receiver>