2013-02-26 68 views
1

我的目标是,我需要创建一个使用服务类而不是活动的数据库,因为我创建了一个服务类,如下所示。在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();    
    } 

在此先感谢。

+0

其广播接收者不是服务... – baboo 2013-02-26 08:00:22

回答

1

绝对是编译错误。

openOrCreateDatabase可以在Context class中看到。 ActivityService扩展了Context类。

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

0

openOrCreateDatabase()方法是Context类的,所以你需要从上下文对象中调用它。即

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