2013-02-26 63 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);