我的目标是,我需要使用不在活动中的服务类来创建数据库,因为我创建了一个服务类,如下所示。
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 :(得分:1)
绝对是编译错误。
在Context
class中可以看到 openOrCreateDatabase
。 Activity
和Service
都扩展了Context
类。
您不是在写服务,而是在接收器上。 BroadcastReceiver不扩展Context类。您可以通过context.openOrCreateDatabase(...)
在接收器中使用上下文对象。
答案 1 :(得分:0)
openOrCreateDatabase()
方法是Context类,因此您需要从上下文对象中调用它。即。
myDb = context.openOrCreateDatabase(path + "/" + db, Context.MODE_PRIVATE, null);