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在课堂上可以看到。并且两者都Activity扩展ServiceContext类。

您不是在编写服务,而是在编写接收器。BroadcastReceiver 不扩展 Context 类。您可以通过在接收器中使用上下文对象context.openOrCreateDatabase(...)

于 2013-02-26T08:02:29.857 回答
0

openOrCreateDatabase()方法属于 Context 类,因此您需要从上下文对象中调用它。IE

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