java - 对 ALARM_SERVICE 的 AlarmManager 进行可疑转换

标签 java android alarmmanager android-context

alarm

有没有人遇到过这样的事情?

场景如下:我想构建一个单独的类,从中我可以通过静态方法停止和启动警报。从 Activity 类中,我想调用我计划构建的此类中的方法,但关键是,即使我计划将 Activity 上下文传递给静态方法,当我传递“上下文”时对于我的 AlarmManager 对象,Android Studio 向我传递了打印在上面屏幕上的以下信息,我不得不承认,我只是无法理解消息的要点。

我错过了什么?我一直在谷歌,但似乎这里的这种情况并不常见。

重要提示:关于上图,我尝试只使用context(下面的代码),而不使用getApplicationContext(),但效果不佳...

代码如下:

package com.mydomain.myapp;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;



public class AlarmManager {

    private static AlarmManager  alarm;
    private static PendingIntent pIntent;


    //start alarm
    public static void setAlarm(Context context, int alarmId, long alarmTime) {

        Intent startAlarmIntent;
        long beginAt  = SystemClock.elapsedRealtime() + 60 * 1000;
        long interval = 300000; // 5 minutes

        alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        startAlarmIntent = new Intent(context, AlarmBroadcastReceiver.class);
        pIntent = PendingIntent.getBroadcast(context, alarmId, startAlarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, beginAt, interval, pIntent);

    }

    //stop alarm
    public static void stopAlarm(Context context, int id) {

        Intent stopAlarmIntent;

        alarm = (AlarmManager)  context.getSystemService(Context.ALARM_SERVICE);
        stopAlarmIntent = new Intent(context, AlarmBroadcastReceiver.class);
        pIntent = PendingIntent.getBroadcast(context, id, stopAlarmIntent, 0);
        alarm.cancel(pIntent);
        pIntent.cancel();

    }

}

有人可以帮忙吗?谢谢!

最佳答案

您创建了一个名为 AlarmManager 的类。这与 Android 的 AlarmManager 不同,您正试图将 getSystemService() 返回的值转换为您的 AlarmManager,而不是 android.app.AlarmManager

最简单的解决方案是将类名更改为其他名称。

关于java - 对 ALARM_SERVICE 的 AlarmManager 进行可疑转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41070419/

相关文章:

java - AWS Fargate - 从本地无法连接到在 aws fargate 上运行的 java 应用程序的 jmx 端口

java - 在包中使用外部类文件

java - 适用于 Android 的 OData4j : ClassNotFoundException for XmlInputFactory

java - 从 Android 编译中排除某些类

java - sleep VS AlarmManager.set AND AlarmManager.setRepeating VS Handler

android - 如何与 AlarmManager 一起启动通知?

java - 如何使用 Elasticsearch async api 控制响应

java - 从 Java 反射中隐藏我的安全 key

Android:如何将生成的临时图像附加到电子邮件中?

java - 从 AlarmManger 启动的服务获取额外内容时的默认值