如何在BroadcastReceiver中打开数据库

use*_*428 1 java android listener broadcastreceiver

我创建了一个用于管理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);
}
Run Code Online (Sandbox Code Playgroud)

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

db = new Database(this);
Run Code Online (Sandbox Code Playgroud)

因为我收到此错误消息:

The constructor Database(SmsListener) is undefined
Run Code Online (Sandbox Code Playgroud)

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

A--*_*--C 6

你的onReceive()方法BroadcastReceiver得到了Context传递,使用它.

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

另外请注意,在内部BroadcastReceiver,您只能保证10秒的执行时间,之后,Android可能会杀死您的Receiver.因此,快速了解您正在做的事情,如果数据库操作很长,请考虑单独使用Thread.