如何在Android中只触发一次警报?

时间:2017-09-21 15:32:46

标签: android alarmmanager android-pendingintent

当用户登陆某个活动时我会发出警报,该活动会在一定时间后触发。 如何检查此警报是否已被触发,以便在用户返回此活动时不会再次设置此警报? 我只能阻止警报再次设置,如果它已经安排但没有被触发:

alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_NO_CREATE);
    if (alarmIntent != null) {
        // Alarm is already set
        return;
    }
    alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);

但如果已触发此功能,则此功能无效,因为警报将在之后删除,因此alarmIntentnull

3 个答案:

答案 0 :(得分:4)

您可以使用共享首选项来检查它是否已设置。

@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START

:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE

:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd

:DONE
endlocal

答案 1 :(得分:0)

更改PendingIntent PendingIntent.FLAG_CANCEL_CURRENT

alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);

答案 2 :(得分:0)

您可以在第一次运行警报时创建一个文件,在下次警报运行时,您可以检查该文件是否已存在,并且您不必再次运行警报。