ALARM_SERVICE 对 AlarmManager 的可疑转换
Suspicious cast to AlarmManager for a ALARM_SERVICE
有没有人遇到过这样的事情?
场景如下:我想构建一个单独的 class,从那里我可以通过静态方法停止和启动警报。在 Activity classes 中,我想调用我计划构建的 class 中的方法,但重点是,即使很艰难,我也计划通过Activity 静态方法的上下文,当我将 "context" 传递给我的 AlarmManager 对象时,Android Studio 向我传递了打印在上面屏幕上的以下信息,我不得不承认,我只是无法理解消息的意义。
我错过了什么?我一直在看Google,不过好像这里的这种情况并不常见。
重要提示:关于上图,我尝试只使用 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
的 class。这与 Android 的 AlarmManager
不同,您正试图将 getSystemService()
返回的值转换为 您的 AlarmManager
, 而不是 android.app.AlarmManager
.
最简单的解决方案是将 class 的名称更改为其他名称。
有没有人遇到过这样的事情?
场景如下:我想构建一个单独的 class,从那里我可以通过静态方法停止和启动警报。在 Activity classes 中,我想调用我计划构建的 class 中的方法,但重点是,即使很艰难,我也计划通过Activity 静态方法的上下文,当我将 "context" 传递给我的 AlarmManager 对象时,Android Studio 向我传递了打印在上面屏幕上的以下信息,我不得不承认,我只是无法理解消息的意义。
我错过了什么?我一直在看Google,不过好像这里的这种情况并不常见。
重要提示:关于上图,我尝试只使用 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
的 class。这与 Android 的 AlarmManager
不同,您正试图将 getSystemService()
返回的值转换为 您的 AlarmManager
, 而不是 android.app.AlarmManager
.
最简单的解决方案是将 class 的名称更改为其他名称。