1

我创建了一个类来管理 SQLite 数据库。其部分代码如下:

public class Database extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "name";
private static final int DATABASE_VERSION = 1;

public Database (Context ctx) {
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}

然后我创建了另一个类,它是一个 SMS 监听器(扩展BroadcastReceiver)。在此类内部,我无法使用以下命令创建数据库:

db = new Database(this);

因为我收到此错误消息:

The constructor Database(SmsListener) is undefined

我应该如何更改代码才能从SmsListener类内部打开数据库连接?

4

2 回答 2

6

您的onReceive()方法BroadcastReceiver通过Context了,使用它。

@Override
public void onReceive(Context context, Intent intent){
    db = new Database(context);
    //more stuff
}

另请注意,在 aBroadcastReceiver中,您只能保证 10 秒的执行时间,之后,Android 可能会杀死您的 Receiver。所以要快速处理你正在做的事情,如果数据库操作很长,请考虑使用单独的Thread.

于 2013-01-13T23:51:35.243 回答
0

您的Database构造函数将 aContext作为其唯一参数。错误消息告诉您这this是一个SmsListenerwhich doesn't extend Context

于 2013-01-14T00:05:54.283 回答