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类内部打开数据库连接?
你的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.