服务未运行在引导时重复警报

时间:2013-10-22 19:11:59

标签: android android-service

我想在系统启动时运行重复警报。这是代码:

// 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提到的对广播接收机的限制有关? 感谢。

1 个答案:

答案 0 :(得分:0)

几点想法

我在您的清单中看到service标记。不应该是receiver吗?在所有教程中,我看到BOOT_COMPLETE被接收器捕获,接收器又启动了AlarmManager。

其次,要接收onboot意图应用程序必须至少手动启动一次。