BroadcastReceiver 没有被报警调用
BroadcastReceiver is not called by alarm
有很多相关问题,我相信我已经全部阅读了两遍左右。出于某种原因,我的眼睛上似乎有西红柿。我没有看到错误。
我使用闹钟管理器设置了闹钟。 (如果需要,很乐意分享更多代码。)
private static String ALARM_ACTION = "de.klecker.BigBen.Alarm";
private static PendingIntent createPendingIntent() {
Intent alarmIntent = new Intent(getContext(), BigBenAlarm.class);
alarmIntent.setAction(ALARM_ACTION);
return PendingIntent.getBroadcast(getContext(), 0, alarmIntent, 0);
}
getContext()
returns 对应用程序的引用。
public static void setAlarmFromNow() {
AlarmManager manager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
PendingIntent intent = createPendingIntent();
// First cancel any ongoing alarm
manager.cancel(intent);
manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5 * 1000), intent);
Log.d("BigBen", "Alarm is set!");
}
警报已正确注册。这是
输出的摘录
adb shell dumpsys 警报
Batch{2f6ac936 num=1 start=68344020 end=68344020}:
RTC_WAKEUP #0: Alarm{f8a5037 type 0 when 1453976393037 de.klecker.bigben}
tag=*walarm*:de.klecker.BigBen.Alarm
type=0 whenElapsed=+4s155ms when=2016-01-28 11:19:53
window=-1 repeatInterval=0 count=0
operation=PendingIntent{3df19a4: PendingIntentRecord{18a6130d de.klecker.bigben broadcastIntent}}
它真的被解雇了。这是日志的摘录:
01-28 11:19:53.038 V/AlarmManager( 885): sending alarm {18a6130d type 0 *walarm*:de.klecker.BigBen.Alarm}
01-28 11:19:53.039 V/AlarmManager( 885): done {18a6130d, *walarm*:de.klecker.BigBen.Alarm} [1ms]
但是收件人没有接到电话。这是接收器 class:
public class BigBenAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
Log.d("BigBen", "Alarm fired!!!");
}
}
日志上既没有出现日志语句,phone也不震动。 (振动许可已在清单中声明)。我试过敬酒和播放声音并设置断点,但显然,该方法从未被调用过。
接收者是这样注册的:
AndroidManifest.xml:
<receiver android:name="de.klecker.bigben.BigBenAlarm">
<intent-filter>
<action android:name="de.klecker.BigBen.Alarm"/>
</intent-filter>
</receiver>
那么我错过了哪个重要的细节?
感谢所有努力过的人。
是的,我的眼睛上确实有西红柿。虽然很尴尬,但我还是把它留在里面并提供答案,以防其他人遇到同样的问题。
最大的错误在 android 清单中。接收器需要在应用程序标签中注册。
AndroidManifest.xml:
<application
android:name=".BigBenApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="Big Ben"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<activity android:name=".BigBenActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name="de.klecker.bigben.BigBenAlarm"
android:enabled="true" >
<intent-filter>
<action android:name="de.klecker.BigBen.Alarm"/>
</intent-filter>
</receiver>
</application>
出于某种原因,我关闭了应用程序,然后尝试注册接收器。
有很多相关问题,我相信我已经全部阅读了两遍左右。出于某种原因,我的眼睛上似乎有西红柿。我没有看到错误。
我使用闹钟管理器设置了闹钟。 (如果需要,很乐意分享更多代码。)
private static String ALARM_ACTION = "de.klecker.BigBen.Alarm";
private static PendingIntent createPendingIntent() {
Intent alarmIntent = new Intent(getContext(), BigBenAlarm.class);
alarmIntent.setAction(ALARM_ACTION);
return PendingIntent.getBroadcast(getContext(), 0, alarmIntent, 0);
}
getContext()
returns 对应用程序的引用。
public static void setAlarmFromNow() {
AlarmManager manager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
PendingIntent intent = createPendingIntent();
// First cancel any ongoing alarm
manager.cancel(intent);
manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5 * 1000), intent);
Log.d("BigBen", "Alarm is set!");
}
警报已正确注册。这是
输出的摘录adb shell dumpsys 警报
Batch{2f6ac936 num=1 start=68344020 end=68344020}:
RTC_WAKEUP #0: Alarm{f8a5037 type 0 when 1453976393037 de.klecker.bigben}
tag=*walarm*:de.klecker.BigBen.Alarm
type=0 whenElapsed=+4s155ms when=2016-01-28 11:19:53
window=-1 repeatInterval=0 count=0
operation=PendingIntent{3df19a4: PendingIntentRecord{18a6130d de.klecker.bigben broadcastIntent}}
它真的被解雇了。这是日志的摘录:
01-28 11:19:53.038 V/AlarmManager( 885): sending alarm {18a6130d type 0 *walarm*:de.klecker.BigBen.Alarm}
01-28 11:19:53.039 V/AlarmManager( 885): done {18a6130d, *walarm*:de.klecker.BigBen.Alarm} [1ms]
但是收件人没有接到电话。这是接收器 class:
public class BigBenAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
Log.d("BigBen", "Alarm fired!!!");
}
}
日志上既没有出现日志语句,phone也不震动。 (振动许可已在清单中声明)。我试过敬酒和播放声音并设置断点,但显然,该方法从未被调用过。
接收者是这样注册的:
AndroidManifest.xml:
<receiver android:name="de.klecker.bigben.BigBenAlarm">
<intent-filter>
<action android:name="de.klecker.BigBen.Alarm"/>
</intent-filter>
</receiver>
那么我错过了哪个重要的细节?
感谢所有努力过的人。 是的,我的眼睛上确实有西红柿。虽然很尴尬,但我还是把它留在里面并提供答案,以防其他人遇到同样的问题。
最大的错误在 android 清单中。接收器需要在应用程序标签中注册。
AndroidManifest.xml:
<application
android:name=".BigBenApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="Big Ben"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<activity android:name=".BigBenActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name="de.klecker.bigben.BigBenAlarm"
android:enabled="true" >
<intent-filter>
<action android:name="de.klecker.BigBen.Alarm"/>
</intent-filter>
</receiver>
</application>
出于某种原因,我关闭了应用程序,然后尝试注册接收器。