Android 从广播接收器启动服务时出错
我是服务行业的新手,所以请容忍我。我正试图从我的broadcastreceiver启动服务类,但应用程序崩溃。在我的broadcastreceiver中,我正在检查传入的sms,并将其插入数据库,然后启动服务 显示 在这里:Android 从广播接收器启动服务时出错,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,我是服务行业的新手,所以请容忍我。我正试图从我的broadcastreceiver启动服务类,但应用程序崩溃。在我的broadcastreceiver中,我正在检查传入的sms,并将其插入数据库,然后启动服务 显示 在这里: db对象为null因为在服务中的任何位置都未初始化。请按以下方式执行: db=LocalService.this.openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null); Cursor c=db.rawQu
db
对象为null
因为在服务中的任何位置都未初始化。请按以下方式执行:
db=LocalService.this.openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
Cursor c=db.rawQuery("SELECT * FROM student
WHERE id=(SELECT MIN(id) FROM student)", null);
数据库工作正常,因为我正在签入MainActivity布局。这项服务还没有开始。非常感谢你。应用程序未因服务未启动错误而崩溃。
public class LocalService extends Service {
SQLiteDatabase db;
String resource, Time, Mesg, webResponse;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startid) {
// Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
Cursor c=db.rawQuery("SELECT * FROM student WHERE id=(SELECT MIN(id) FROM student)", null);
if(c.getCount()==0){
Toast.makeText(getApplicationContext(), "No SMS found", Toast.LENGTH_SHORT).show();
}
else if(c.moveToNext()) {
Sender = c.getString(1);
TimeStamp = c.getString(2);
Mesg = c.getString(3);
}
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://example.com/createsms.asmx/broadcast?");
//Post Data
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(5);
nameValuePair.add(new BasicNameValuePair("a", "AB1"));
nameValuePair.add(new BasicNameValuePair("b", "IN"));
nameValuePair.add(new BasicNameValuePair("c", resource));
nameValuePair.add(new BasicNameValuePair("d", Time));
nameValuePair.add(new BasicNameValuePair("e", Mesg));
//Encoding POST data
try{
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
System.out.println(e);
}
//making POST request.
try{
HttpResponse response = httpClient.execute(httpPost);
String XmlString = EntityUtils.toString(response.getEntity());
XmlString=XmlString.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
XmlString = XmlString.substring(XmlString.indexOf("[") + 1, XmlString.lastIndexOf("]"));
JSONObject jObj = new JSONObject(XmlString);
webResponse = jObj.getString("status");
} catch (ClientProtocolException e) {
// Log exception
e.printStackTrace();
System.out.println(e);
} catch (IOException e) {
// Log exception
e.printStackTrace();
System.out.println(e);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // onStart ends
@Override
public void onDestroy() {
//Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
}
}
Cursor c=db.rawQuery("SELECT * FROM student
WHERE id=(SELECT MIN(id) FROM student)", null);
db=LocalService.this.openOrCreateDatabase("StudentDB", Context.MODE_PRIVATE, null);
Cursor c=db.rawQuery("SELECT * FROM student
WHERE id=(SELECT MIN(id) FROM student)", null);