java - 如何在 BroadcastReceiver 中打开数据库

标签 java android broadcastreceiver listener

我创建了一个类来管理 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 类内部打开数据库连接?

最佳答案

您在 BroadcastReceiver 中的 onReceive() 方法获得了一个 Context,使用它。

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

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

关于java - 如何在 BroadcastReceiver 中打开数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309631/

相关文章:

Android auth_token 验证和使用服务器端

android - 关于android服务器错误500

android - 为 ACTION_BATTERY_CHANGED 注册一个广播接收器到底消耗了多少电量?

java - 序列化期间没有有效的构造函数

Java按空格和标点符号分割字符串,但结果中仅包含标点符号

java - 如何在Java中重新对井字棋的二维数组进行移动?

java - Android ActionBar 不显示在代码中设置的标题

android - 如何捕捉 ACTION_MEDIA_BUTTON 的按住(长按)

android - 重启接收器在小米手机中不起作用

java - java中通过递归找到字符串的真子集