如何从广播接收者(ReceiverRestrictedContext)访问数据库?

时间:2012-07-24 10:42:00

标签: android sqlite cursor alarmmanager

我正在尝试使用警报管理器从我的应用程序的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,但如果我不这样做,编译器会给我一个错误。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

广播接收器应该很轻。因此,最好的方法是将其委托给活动或服务......当您开始和活动/服务时,您可以使用 this 作为上下文。