我无法让BroadcastReceiver工作。 onReceive没有被调用。我没有使用服务。我在我的activity的onCreate方法中设置闹钟。我也在使用RTC_WAKEUP。但是,如果我的设备已经清醒怎么办? onReceive会被调用吗?即使设备处于唤醒状态,我也希望onReceiver被调用。通常情况下,即使设备处于睡眠状态,我也需要调用接收器,但我也想在手动启动活动时执行接收器执行的代码。以下是我开始报警的方式:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, ServiceStarter.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi);
在清单中:
<receiver android:process=":remote" android:name=".ServiceStarter" android:exported="true"></receiver>
答案 0 :(得分:1)
但是如果我的设备已经清醒怎么办? onReceive会被调用吗?
是
以下是我开始报警的方式:
您正在使用getActivity()
。该组件不是Activity
。这是BroadcastReceiver
。使用getBroadcast()
构建一个PendingIntent
来触发BroadcastReceiver
。
在清单中:
删除android:process="remote"
,因为您不需要它,并且通过浪费RAM来损害用户。此外,删除android:exported="true"
,因为您不需要它,并且通过允许任何人触发您的BroadcastReceiver
来削弱安全性。