可疑转为AlarmManager以获取ALARM_SERVICE

时间:2016-12-09 23:26:26

标签: java android alarmmanager android-context

alarm

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

这是一个场景:我想通过静态方法构建一个单独的类,从中我可以停止并启动警报。在Activity类中,我想调用我计划构建的这个类的方法,但重点是,即使很难,我也计划将Activity上下文传递给静态方法,当我传递"背景"在我的AlarmManager对象中,Android Studio向我传递了以下信息,这些信息打印在上面的屏幕上,我不得不承认,我只能说明消息的重点。

我错过了什么?我一直在寻找谷歌,但似乎这种情况不是那么常见。

IMPORTAT:关于上面的图片,我尝试仅使用上下文(下面的代码),而不使用 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();

    }

}

有人可以帮忙吗? TKS!

1 个答案:

答案 0 :(得分:5)

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

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