1

私の目的は、アクティビティにないサービス クラスを使用してデータベースを作成する必要があることです。そのために、次のようなサービス クラスを 1 つ作成しました。

   public class Receiver extends BroadcastReceiver
   {       
       @Override    
        public void onReceive(Context context, Intent intent)
        {
             select();//
        } 

        public void select()
        {
            SQLiteDatabase myDb;
            myDb = openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null);
            cur4readdb = myDb.query("users",null, null, null, null, null, null);
            cur4readdb.moveToFirst();
            while (cur4readdb.isAfterLast() == false)
            {
               Log.i(TAG, " From SMSReceive : " + cur4readdb.getString(1));
               cur4readdb.moveToNext();
             }
            cur4readdb.close();
        }
    }


しかし、私はこの行にエラーがあります:

    myDb = openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null); //openOrCreateDatabase is underlined in red colour.


私の主な活動では、ここで動作する同じコードを使用しました。しかし、サービスではありません。どなたか教えてください。可能かどうか。はいの場合は、その解決策を詳しく説明してください。

    myDb = openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null);       
    cur4readdb = myDb.query("users", null, null, null, null, null, null);
    cur4readdb.moveToFirst();
    while (cur4readdb.isAfterLast() == false)
    {
        Log.i(TAG, "User : " + cur4readdb.getString(1));
        cur4readdb.moveToNext();            
    }

前もって感謝します。

4

2 に答える 2

1

間違いなくコンパイルエラーです。

openOrCreateDatabaseContextクラスで見ることができます。そして、クラスActivityService拡張します。Context

あなたはサービスを書いているのではなく、レシーバーを書いています。BroadcastReceiver は Context クラスを拡張しません。によって、レシーバーでコンテキスト オブジェクトを使用できますcontext.openOrCreateDatabase(...)

于 2013-02-26T08:02:29.857 に答える
0

openOrCreateDatabase()メソッドは Context クラスなので、コンテキスト オブジェクトから呼び出す必要があります。すなわち

myDb = context.openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null);
于 2013-02-26T08:03:30.003 に答える