10

我正在尝试在指定时间设置警报,但它没有被我的接收器捕获。

设置:

Intent intent = new Intent(this, ActionReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar current = Calendar.getInstance();
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (current.getTimeInMillis() + 60000),3600000, pendingIntent);

这是我的接收器:

public class ActionReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras(); //breakpoint here that doesn't get triggered 
  }
 }

我已将这些值放入我的清单中:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name="com.project.ActionReceiver" android:enabled="true" />

不知道出了什么问题...谢谢!

4

3 回答 3

4

终于让接收器开火了!我在清单中添加了以下代码:

    <receiver
        android:name="com.project.ActionReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.project.ActionSetter" >
            </action>
        </intent-filter>
    </receiver>

在这里找到详细信息:https ://stackoverflow.com/a/16119351/1174574

于 2013-09-05T06:01:23.490 回答
2

您的清单中的接收者名称应该是类名,例如:

<receiver android:name="com.project.ActionReceiver">

顺便说一句,设置一个动作是一种更好的做法。

Intent intent = new Intent(this, ActionReceiver.class);
intent.setAction("com.project.action.ALERM");

在清单中

<receiver android:name="com.project.ActionReceiver">
    <intent-filter>
        <action android:name="com.project.action.ALERM"/>
    </intent-filter>
</receiver>
于 2013-09-05T03:25:13.033 回答
1

尝试将android:nameyour 的属性更改receiverActionReceiver. 就像是:

<receiver android:name="com.project.ActionReceiver" android:enabled="true" />
于 2013-09-05T03:26:20.680 回答