我正在尝试使用警报管理器从我的应用程序的sqlite数据库中获取一些值。 现在我们都知道扩展SQLiteOpenHelper的DB类需要一个上下文,而broadcastreciever会得到这样的上下文:
@Override
public void onReceive(Context context, Intent intent) {
问题是当我用这个上下文调用DB类时,我得到以下异常:
无法启动接收器com.ayham.mycar.AlarmBroadcastReceiver:java.lang.ClassCastException:android.app.ReceiverRestrictedContext
完整的代码是这样的:
public class AlarmBroadcastReceiver extends BroadcastReceiver {
NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
//get the values from the DB:
DBhelper mDBGet=new DBhelper(context);
Cursor mCursor=mDBGet.allProperties((Activity) context);}}
我知道我不应该将上下文转换为Activity,但如果我不这样做,编译器会给我一个错误。 我怎么能这样做?
答案 0 :(得分:1)
广播接收器应该很轻。因此,最好的方法是将其委托给活动或服务......当您开始和活动/服务时,您可以使用 this 作为上下文。