android - 如何检查警报是否已设置并正在运行

标签 android

我有一个在手机启动后启动的接收器,如下所示:

<receiver android:name=".OnBootReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>

</receiver>

在我运行的接收器中设置这样的闹钟:

AlarmManager  mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

        Intent i=new Intent(context, LocationPoller.class);

        i.putExtra(LocationPoller.EXTRA_INTENT,
                  new Intent(context, LocationReceiver.class));
        i.putExtra(LocationPoller.EXTRA_PROVIDER,
                 LocationManager.GPS_PROVIDER);



         PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0);
          mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                        SystemClock.elapsedRealtime(),
                        PERIOD,
                        pi);

它工作正常,当然,除了当用户安装应用程序时,直到用户重启手机才会设置闹钟。

要解决这个问题,我需要从我的 Activity 中检查是否设置了 AlarmManager,如果没有,我需要从 Activity 中进行设置。

因此,如何检查是否已设置警报管理器。

最佳答案

您唯一可以做的就是当用户安装应用程序并第一次打开它时,您可以在 SharedPreference 中设置一个标志,告诉您是否设置了警报,如果没有设置警报。

在您的主要 Activity 中 checkin onCreate 方法

SharedPreferences spref = getSharedPreferences("TAG", MODE_PRIVATE);

 Boolean   alaram_set = spref.getBoolean("alarm_set_flag", false);  //default is false

if(!alaram_set){
//create your alarm here then set the flag to true

 SharedPreferences.Editor editor = spref.edit();
        editor.putBoolean("alarm_set_flag", true); // value to store
        editor.commit();
}

关于android - 如何检查警报是否已设置并正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214160/

相关文章:

Android 底部导航栏与 Spinner 重叠。设置 Spinner 下拉高度/边距

android - 如何从 GradientDrawable 获取颜色

android - 在 Android 中为 Web 服务编码表情符号时出现问题

android - 我无法接收有关电池状态变化的广播?

android - 在不同的屏幕比例下实现相同的字体大小

android - Activity 不显示 RecyclerView - 数据绑定(bind)

android - 具有动态 TextView 和可绘制图像的 GridView

android - 无法按时间戳对 firebase 实时数据库中的数据进行排序

android字节数组正在缩短数字?

android - 围绕二维坐标系中的特定点缩放