java - 从Service中的数据库获取数据

标签 java android sqlite oop mobile

我已经尝试了好几天,但似乎找不到解决方案,我试图从服务中的数据库中获取值(value),但我的应用程序崩溃了。但相同的代码可以在 Activity 中运行,但不能在后台服务中运行。

这是代码

   public class Services1 extends Service {
    Context cont = this;
@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

public void onCreates() {
    // TODO Auto-generated method stub

    String go = "running";

    Toast.makeText(cont, go, Toast.LENGTH_LONG).show();
    super.onCreate();
}
@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
}


    public void onStartCommand(Intent intent, String Number, String Body ) {
            // TODO Auto-generated method stub


        SmsManager  smsManager = SmsManager.getDefault();

         String phoneNo = Number;
            String sms = Body;

        Data obj = new Data(this);

    //  String dar = obj.Data1("1").toString();


        try{
            SQLiteDatabase db = openOrCreateDatabase("FinalDB", MODE_PRIVATE, null);

            Cursor c = db.rawQuery("SELECT REPLAYS FROM Rtm WHERE ID = 1", null);
            c.moveToFirst();
            String dar = c.getString(c.getColumnIndex("REPLAYS"));

                String api = "Yeap service started";

                String rep = sms.replace(phoneNo+" :", "");
                smsManager.sendTextMessage(phoneNo, null, dar, null, null);

        }catch (Exception e)
        {
            System.out.println("Some Problem Here");
            e.printStackTrace();
        }




        }







}

我没有语法错误。但是当我在没有数据库的情况下调用 onstartcommand 时它工作正常,但是当使用数据库时它不起作用应用程序崩溃我也尝试过

        Data obj = new Data(this);

            String dar = obj.Data1("1").toString(); // getting value from my SQLitehelper class it works in activity but not in service.

所以我的问题是在服务中检索数据库的方法是错误的,或者是否有更好的方法。

我的 sqlitehelper 类

public class Data  extends SQLiteOpenHelper {
 static String Database_Name = "FinalDB";
static int Database_Version = 3;
public Data(Context context) {
    super(context, Database_Name, null, Database_Version);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}

public String Data1(String id)
{


    SQLiteDatabase db = getReadableDatabase();

    Cursor c = db.rawQuery("SELECT REPLAYS FROM Rtm WHERE ID = +"+id, null);
    c.moveToFirst();
    String repl = c.getString(c.getColumnIndex("REPLAYS"));



    return repl;
}

我的广播员类(class)

   public class BroadCastRecivers extends BroadcastReceiver{

static String from;
static String body;

@Override
public void onReceive(Context cont, Intent intent) {
    // TODO Auto-generated method 

//  SmsManager  smsManager = SmsManager.getDefault();


        // TODO Auto-generated method s
          //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
           from  =   str  =  msgs[i].getOriginatingAddress();              
                str += " :";
           body =  str += msgs[i].getMessageBody().toString();
                str += "\n";

            }
            //---display the new SMS message---
        //    Toast.makeText(cont, str, Toast.LENGTH_LONG).show();

            Services1 obj = new Services1();

            obj.onStartCommand(intent, from, body);



  }
}


   }

最佳答案

您的服务创建过程中存在拼写错误。改变

    public void onCreates() {

    @Override
    public void onCreate() {

关于java - 从Service中的数据库获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317637/

相关文章:

java - 运行 AsyncTask 时选项菜单保持打开状态

java - 删除netbeans中的鼠标监听器

android - 数据库删除功能不起作用

android - 点击前景 View

Python算法对大块数据进行排序

java - GNU Smalltalk - 继承和多参数方法/构造函数

android - 当应用程序无法处理 Deep Link 时如何优雅地回退到网站

sql - 在SQLite中合并具有关系的多个数据库

android - SQLITEASSETHELPER 正确的升级脚本

java - 如何在 Spring 配置中访问命令行参数?