【问题标题】:How to access a database from a broadcastreceiver (ReceiverRestrictedContext)?如何从广播接收器(ReceiverRestrictedContext)访问数据库?
【发布时间】:2012-07-24 10:41:59
【问题描述】:

我正在尝试使用警报管理器从我的应用程序的 sqlite 数据库中获取一些值。 现在我们都知道扩展 SQLiteOpenHelper 的 DB 类需要一个上下文,而广播接收器得到一个这样的上下文:

@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,但如果我不这样做,编译器会给我一个错误。 我怎样才能做到这一点?

【问题讨论】:

    标签: android sqlite cursor alarmmanager


    【解决方案1】:

    广播接收器应该很轻。所以最好的方法是把它委托给一个活动或服务......当你启动活动/服务时,你可以使用 this 作为上下文。

    【讨论】:

    • 它现在不起作用,我得到了上下文的 NullpointerException
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多