我一直在嘗試幾天,但似乎我無法找到解決方案,我試圖從服務器中的數據庫獲取價值,但我的應用程序只是崩潰。但是相同的代碼適用於活動,但不適用於後臺服務。從服務器中的數據庫獲取數據
這是代碼
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沒有數據庫,它工作正常,但使用數據庫時,它不工作的應用程序崩潰我也曾嘗試
所以我的問題是,在服務中檢索數據庫或錯誤的做法是有一個更好的方法。
我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;
}
我的廣播級
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);
}
}
}
太多的空白,使該代碼難以閱讀,我建議重新格式化代碼.... – t0mm13b
也有很多待辦事項... – vault