无法判断警报是否已安排 - 重复警报

时间:2012-12-28 16:46:52

标签: android scheduling alarmmanager alarm

我有一个在StartActivity类中启动的重复闹钟。包是psychsoft.gps.v1代码似乎没有捕获警报是否启动。

        if ((PendingIntent.getBroadcast(con, 13336,
            new Intent("psychsoft.gps.v1"), 
            PendingIntent.FLAG_NO_CREATE) != null))
    {
        Log.i("aaa", "Alarm is already active");
        Toast.makeText(con, "alarm already active", Toast.LENGTH_SHORT).show();
    }



    Calendar calGPS = Calendar.getInstance();
    Intent intentGPS = new Intent(con, AlarmReceiver.class);
    intentGPS.putExtra("alarm_message", "gps");
    PendingIntent senderGPS = PendingIntent.getBroadcast(this, 13336, intentGPS, PendingIntent.FLAG_UPDATE_CURRENT);        
    // Get the AlarmManager service
    AlarmManager amGPS = (AlarmManager) getSystemService(ALARM_SERVICE);
    amGPS.setRepeating(AlarmManager.RTC_WAKEUP, calGPS.getTimeInMillis(),1000*60*5, senderGPS);

要测试此代码,我会运行一次以安排闹钟(安装应用程序)。然后我再次运行它(通过单击图标)尝试获取Toast或Log输出。我两个都没有。为什么?我最初的问题可能是通过将PendingIntent的请求代码与if语句的请求代码匹配来修复,但它没有解决问题。

1 个答案:

答案 0 :(得分:0)

尝试创建并检查这样的意图:

Intent intentGPS = new Intent("psychsoft.gps.v1.MY_UNIQUE_ACTION");

if ((PendingIntent.getBroadcast(con, 13336,
            new Intent("psychsoft.gps.v1.MY_UNIQUE_ACTION"), 
            PendingIntent.FLAG_NO_CREATE) != null))
    {
        Log.i("aaa", "Alarm is already active");
        Toast.makeText(con, "alarm already active", Toast.LENGTH_SHORT).show();
    }
相关问题