android广播接收器中创建数据库的代码

时间:2013-02-26 07:57:19

标签: java android

我的目标是,我需要使用不在活动中的服务类来创建数据库,因为我创建了一个服务类,如下所示。

   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();            
    }

提前致谢。

2 个答案:

答案 0 :(得分:1)

绝对是编译错误。

Context class中可以看到

openOrCreateDatabaseActivityService都扩展了Context类。

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

答案 1 :(得分:0)

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

myDb = context.openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null);