Служба Android не может подключиться к веб-службе, когда приложение закрыто
Я разрабатываю приложение, которое подключается к веб-сервису через интернет и получает некоторую информацию, и я использовал асинхронную задачу для этого в двух действиях. Теперь я хочу использовать тот же код в сервисном классе, который работает с задачей таймера, и на каждом ТИКе, если приложение не запущено, оно должно возвращать некоторые данные из веб-сервиса. Я могу извлекать данные, когда приложение открыто, но когда я закрываю его, я получаю "подключение к foo.com отказано"!
public void initializeTimerTask() { timerTask = new TimerTask() { public void run() { //use a handler to run a toast that shows the current timestamp handler.post(new Runnable() { public void run() {if(!isAppRunning(getApplicationContext(),getPackageName())) { new ExecuteTask().execute(); } } }); } }; } class ExecuteTask extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onCancelled() { super.onCancelled(); } @Override protected String doInBackground(String... params) { String res1=""; try { res1 = PostData(); } catch (Exception ex) { } return res1; } @Override protected void onPostExecute(String result) { if (!isCancelled()) { Log.d("responsed", result); try { int Ifrom = result.indexOf("["); int ITo = result.lastIndexOf("]"); if (Ifrom > -1 && ITo > -1) { result = result.substring(Ifrom, ITo + 1); Log.d("test", result); } android.util.JsonReader reader = new android.util.JsonReader(new StringReader(result)); reader.setLenient(true); Type listType = new Type() { }; listType = new TypeToken<List<alarms>>() { }.getType(); List<alarms> lstAlarms = new ArrayList<alarms>(); lstAlarms = new Gson().fromJson(result, listType); //if there is new alarm then show notifications if(lstAlarms.size()>0) } catch (Exception ex) { } } } } public String PostData() { String s = ""; try { HttpClient httpClient = new DefaultHttpClient(); String Url = ""; Url = settingsWeb.getString("Address", null); List<namevaluepair> nameValuePairs = new ArrayList<namevaluepair>(); nameValuePairs.add(new BasicNameValuePair("JsonQuery",Command); Url += "/SelectJsonAlarms"; HttpPost httppost = new HttpPost(Url); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpClient.execute(httppost); s = readResponse(response); } catch (Exception e) { return "error"; } return s; }
Что я уже пробовал:
У меня есть uses-permission android:name="android.permission.Интернет" в моем Манифесте Android.
Я получаю ошибку в этой строке ==> HttpResponse response = httpClient.execute(httppost);