我想在系统启动时运行重复警报。这是代码:
// Run the SendService once an hour
@Override
public void onReceive(Context context, Intent intent) {
//Logger.getInstance().writeLine(getClass().getName(), "Received boot, start SMS repeating alarm");
Toast.makeText(context, "Starting SMS2Mail alarm on boot", Toast.LENGTH_LONG).show();
Intent svcIntent = new Intent(context, MessageFileService.class);
svcIntent.setAction(MessageFileService.GET_INTENT);
sendSMSIntent = PendingIntent.getBroadcast(context, 0, svcIntent, 0);
alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
AlarmManager.INTERVAL_HOUR, sendSMSIntent);
}
清单有
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
和
<service
android:name="com.cio1.sms2mail.StartSendService"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</service>
只要我的调试资源可以告诉我,AlarmManager根本不会触发。此外,任何有关如何从启动时间恢复LogCat信息的线索都会有所帮助。 此外,这是否与here提到的对广播接收机的限制有关? 感谢。
答案 0 :(得分:0)
几点想法
我在您的清单中看到service
标记。不应该是receiver
吗?在所有教程中,我看到BOOT_COMPLETE被接收器捕获,接收器又启动了AlarmManager。
其次,要接收onboot意图应用程序必须至少手动启动一次。