Мое приложение использует службу загрузки. В службе мне нужно получить значения из базы данных, но приложение падает, когда оно пытается получить значения ...
Ошибка logcat приведена ниже ...........
01-03 22: 19: 46.097: E / AndroidRuntime (240): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
01-03 22: 19: 46.097: E / AndroidRuntime (240): java.lang.RuntimeException: невозможно создать службу com.android.antitheft.MyService: java.lang.IllegalStateException: получить слот поля из строки 0 col -1 не удалось
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.app.ActivityThread.handleCreateService (ActivityThread.java:2969)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.app.ActivityThread.access $ 3300 (ActivityThread.java:125)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2087)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.os.Handler.dispatchMessage (Handler.java:99)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.os.Looper.loop (Looper.java:123)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.app.ActivityThread.main (ActivityThread.java:4627)
01-03 22: 19: 46.097: E / AndroidRuntime (240): at java.lang.reflect.Method.invokeNative (собственный метод)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на java.lang.reflect.Method.invoke (Method.java:521)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
01-03 22: 19: 46.097: E / AndroidRuntime (240): at dalvik.system.NativeStart.main (собственный метод)
01-03 22: 19: 46.097: E / AndroidRuntime (240): вызвано: java.lang.IllegalStateException: получить слот поля из строки 0 col -1 не удалось
01-03 22: 19: 46.097: E / AndroidRuntime (240): в android.database.CursorWindow.getString_native (собственный метод)
01-03 22: 19: 46.097: E / AndroidRuntime (240): в android.database.CursorWindow.getString (CursorWindow.java:329)
01-03 22: 19: 46.097: E / AndroidRuntime (240): в android.database.AbstractWindowedCursor.getString (AbstractWindowedCursor.java:49)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на com.android.antitheft.MyService.onCreate (MyService.java:69)
01-03 22: 19: 46.097: E / AndroidRuntime (240): на android.app.ActivityThread.handleCreateService (ActivityThread.java:2959)
01-03 22: 19: 46.097: E / AndroidRuntime (240): ... еще 10
Спасибо заранее ..............
my service.java // file
package com.android.antitheft;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.IBinder;
import android.telephony.TelephonyManager;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.Toast;
public class MyService extends Service {
SQLiteDatabase myDB;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
System.out.println("@@@@@@@@@@@OnCreate1111");
Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
myDB = MyService.this.openOrCreateDatabase("antitheft", MODE_PRIVATE, null);
Cursor cursor1 = myDB.query("SimSerial", null, null, null, null, null, null);
cursor1.moveToLast();
//cursor1.moveToFirst();
String ss1 = cursor1.getString(cursor1.getColumnIndex("simno"));
Toast.makeText(this, "FROM DATABASE: SIM SERIAL "+ss1, Toast.LENGTH_LONG).show();
cursor1.close();
myDB.close();
// cursor2.moveToNext();
// String num2 = cursor2.getString(cursor2.getColumnIndex("secure"));
//
// cursor2.moveToNext();
// String num3 = cursor2.getString(cursor2.getColumnIndex("secure"));
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String ss=tm.getSimSerialNumber();
Log.v("SERVICE", ss);
Toast.makeText(this, "Service started : SIM SERIAL "+ss, Toast.LENGTH_LONG).show();
Log.v("StartServiceAtBoot", "StartAtBootService -- onStartCommand()");
if(ss.equals(ss1))
{
SmsManager sms = SmsManager.getDefault();
// sms.sendTextMessage("5556", null, "message", null, null);
Toast.makeText(this, "INSIDE iffffffffffff ", Toast.LENGTH_LONG).show();
myDB = MyService.this.openOrCreateDatabase("antitheft", MODE_PRIVATE, null);
Cursor cursor2 = myDB.query("SimSerial", null, null, null, null, null, null);
cursor2.moveToFirst();
while (cursor2.isAfterLast() == false) {
String num1 = cursor2.getString(cursor2.getColumnIndex("secure"));
sms.sendTextMessage(num1, null, "message", null, null);
cursor2.moveToNext();
}
cursor2.close();
myDB.close();
// sms.sendTextMessage(num1, null, "message", null, null);
// sms.sendTextMessage(num2, null, "message", null, null);
// sms.sendTextMessage(num3, null, "message", null, null);
}
// else
//
// {
// SmsManager sms = SmsManager.getDefault();
// sms.sendTextMessage("5556", null, "message", null, null);
//
// Toast.makeText(this, "INSIDE elseeeeeeeeeeeeee", Toast.LENGTH_LONG).show();
// }
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
}