2014-04-12 20 views
0

当我的互联网连接回来时,我想向服务器发送SQLite数据的多条记录,我编写了一个broadcast receiver,它在我的互联网返回时起作用,但是它只向服务器发送一个数据,我想在互联网回来时发送所有表的记录,并建议我如何在for循环中将参数传递给async task,并将每个数据传递给参数。我想向服务器发送多个sqlite记录

public class BroadcastCreateTask extends BroadcastReceiver { 
     DatabaseHandler db; 
     public ProgressDialog pDialog; 
     JSONParser jsonParser=new JSONParser(); 
     private static String url_insert_task= ""; 
     // JSON Node names 
     private static final String TAG_SUCCESS = "success"; 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      db= new DatabaseHandler(context); 
      boolean status = NetworkUtil.isNetworkAvailable(context); 
      String s = String.valueOf(status); 
      if(s.equals("true")) 
      Toast.makeText(context, "Connected to internet", Toast.LENGTH_LONG).show(); 
      new createTask().execute(); 
      Toast.makeText(context, "data send to server", Toast.LENGTH_SHORT).show(); 

      if(s.equals("false")) 
       Toast.makeText(context, "Not Connected to internet", Toast.LENGTH_SHORT).show(); 

     } 

    class createTask extends AsyncTask<String, Void,String> 
     { 
     @Override 
     protected String doInBackground(String... arg0) { 

      List<Task> tasks = db.getAllContacts(); 
      for(Task t : tasks){ 
      String o = t.getOwner(); 
      String s = t.getSubject(); 
      String st = t.getStartDate(); 
      String dt = t.getDueDate(); 
      String c = t.getContacts(); 
      String sta = t.getStatus(); 
      String p = t.getPriority(); 
      String d = t.getDescription(); 

      ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("owner",o)); 
      params.add(new BasicNameValuePair("subject",s)); 
      params.add(new BasicNameValuePair("startdate",st)); 
      params.add(new BasicNameValuePair("duedate",dt)); 
      params.add(new BasicNameValuePair("contacts",c)); 
      params.add(new BasicNameValuePair("status",sta)); 
      params.add(new BasicNameValuePair("priority",p)); 
      params.add(new BasicNameValuePair("description",d)); 

      JSONObject json = jsonParser.makeHttpRequest(url_insert_task, "POST", params); 
      db.deleteContact(new Task(o,s)); 
      // check log cat for response 
      Log.d("Create Response", json.toString()); 

      try 
      { 
      int success = json.getInt(TAG_SUCCESS); 
       if(success==1) 
       { 
       pDialog.dismiss(); 
       } 
      } catch (JSONException e) 
      { 
      // TODO: handle exception 
      e.printStackTrace(); 
      } 
      return null; 
      } 
      return null; 
      } // end of background method 

      @Override 
     protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     } 
     } // end of async task 
     }` 
+0

您应该可以执行查询并遍历查询返回的'Cursor'中的行。也许如果你展示你目前的实施,我们可以帮助你更好。 – Karakuri

+0

我已经写了异步任务的循环,但最终异步任务只会被调用一次,ñ如何将参数传递给异步任务并设置为参数,我无法得到它。 –

+0

很难理解你的描述。请显示您写的代码,以帮助我了解您的问题。 – Karakuri

回答

1

你有for循环的结束括号之前的声明return null。您的循环只运行一次并返回,这就解释了为什么只有一条记录正在发送。

+0

所以我该怎么做。? –

+0

删除此行。 – Karakuri

+0

好吧,等待,我正在做,并再次运行, –