Android 将警报设置为每30秒一次是否正确???

Android 将警报设置为每30秒一次是否正确???,android,Android,我需要每30秒启动一次警报,我需要在不运行应用程序的情况下激活警报。但无论应用程序是否运行,AlarmReceiver都不会被调用。有什么建议吗? start方法位于MainActivity.java类中 public void start() { Calendar calendar=Calendar.getInstance(); calendar.add(Calendar.SECOND, 30); Intent intent = new Intent(MainActi

我需要每30秒启动一次警报,我需要在不运行应用程序的情况下激活警报。但无论应用程序是否运行,AlarmReceiver都不会被调用。有什么建议吗? start方法位于MainActivity.java类中

 public void start() {
    Calendar calendar=Calendar.getInstance();
    calendar.add(Calendar.SECOND, 30);
    Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
    PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pintent);
    Log.d("alarm","alarm set for alarm receiver");
}
我的接收文件

public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
   // Toast.makeText(context,"Alarm Receiver ",Toast.LENGTH_SHORT).show();
    Log.d("Alarm","Alarm receive");

}
}

清单文件:

<?xml version="1.0" encoding="utf-8"?>



在这里,我可以设置报警,但我没有收到报警。在本页中,有一个您需要的完整示例:

显然,你必须改变路线:

PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

将启动方法更改为:

public void start() {
    Intent alarmIntent = new Intent(this, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
    AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    int interval = 30 * 1000; // 30 seconds of interval.
    manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
    Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
}

让我知道是否有效。

在本页中,有一个您需要的已完成示例:

显然,你必须改变路线:

PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

将启动方法更改为:

public void start() {
    Intent alarmIntent = new Intent(this, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
    AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    int interval = 30 * 1000; // 30 seconds of interval.
    manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
    Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
}

让我知道是否有效。

我最近遇到了这个问题。问题在于我的自定义可包裹对象,使用原语效果很好。这个答案帮助了我:

我最近遇到了这个问题。问题在于我的自定义可包裹对象,使用原语效果很好。这个答案帮助了我:

获取这些警告消息无法启动服务意图{flg=0x4 cmp=com.example.bipin.getlocationdetails/.AlarmReceiver(有额外功能)}U=0:not found'获取这些警告消息无法启动服务意图{flg=0x4 cmp=com.example.bipin.getlocationdetails/.AlarmReceiver(有额外功能)}U=0:not found'