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リスナー(extending)である別のクラスを作成しました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
}

また、の内部ではBroadcastReceiver、実行時間は10秒しか保証されていないことに注意してください。その後、AndroidがReceiverを強制終了する可能性があります。したがって、実行していることをすばやく実行し、データベース操作に時間がかかる場合は、別のを使用することを検討してThreadください。

于 2013-01-13T23:51:35.243 に答える
0

コンストラクターは、唯一Databaseのパラメーターとしてを取ります。Contextエラーメッセージthisは、SmsListenerそれが拡張されていないことを示していますContext

于 2013-01-14T00:05:54.283 に答える