Приложение для обновления аккаунта на сервере
Приложение для обновления аккаунта очень примитивно. При открытии приложения мы видим информацию об устройстве и поле ввода, в которое необходимо ввести логин состоящий из цифр.
После ввода аккаунта и нажатия кнопки "обновить" приложение подключается к серверу, и обновляет баланс аккаунта.
Внутренности приложения
Сорцы приложения доступны по ссылке
Вся логика приложения находится в одном классе MainActivity
Приложение подключается к серверу отличному от того, что используется на сайте:
public final String PROFILE_SRV_URL = "http://35.242.200.42/profile/update_profile.php";
Основной пласт логики находится в AsyncTask
private class HttpAsyncTask extends AsyncTask<String, Void, String> { private ProgressDialog dlg;
private HttpAsyncTask() { }
/* synthetic */ HttpAsyncTask(MainActivity x0, Object x1) { this(); }
/* Access modifiers changed, original: protected|varargs */ public String doInBackground(String... urls) { return MainActivity.this.postData(urls[0]); }
/* Access modifiers changed, original: protected */ public void onPreExecute() { this.dlg = ProgressDialog.show(MainActivity.this, "Пожалуйста, подождите", "Выполняется активация аккаунта.."); }
/* Access modifiers changed, original: protected */ public void onPostExecute(String response) { if (this.dlg != null) { this.dlg.dismiss(); } MainActivity.this.updateBtn.setEnabled(true); String errorCode; try { JSONObject jObject = new JSONObject(response); errorCode = jObject.getString("error_code"); if (errorCode.equals("LOGIN_NOT_FOUND")) { MainActivity.this.alert("Ошибка", "Пользователь с таким логином не найден! Убедитесь, что Вы верно ввели свой логин."); } else if (errorCode.equals("SERVER_ERROR")) { MainActivity.this.alert("Ошибка сервера", jObject.getString("error_message")); } else if (errorCode.equals("SUCCESS")) { MainActivity.this.alert("Учетная запись обновлена", "Поздравляем! Ваша учетная запись успешно обновлена.\nТеперь Вы можете закрыть это приложение и начать работать через сайт."); } } catch (Exception e) { errorCode = "Ошибка ответа от сервера. Повторите запрос позже."; e.printStackTrace(); if (MainActivity.this.isDebuggable) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(errorCode); stringBuilder.append("\n\n"); stringBuilder.append(response); errorCode = stringBuilder.toString(); } MainActivity.this.alert("Ошибка", errorCode); } } }
Выполняется метод postData()
, в зависимости от кода ответа, выполняется определенное действие.
if (errorCode.equals("LOGIN_NOT_FOUND")) { MainActivity.this.alert("Ошибка", "Пользователь с таким логином не найден! Убедитесь, что Вы верно ввели свой логин."); } else if (errorCode.equals("SERVER_ERROR")) { MainActivity.this.alert("Ошибка сервера", jObject.getString("error_message")); } else if (errorCode.equals("SUCCESS")) { MainActivity.this.alert("Учетная запись обновлена", "Поздравляем! Ваша учетная запись успешно обновлена.\nТеперь Вы можете закрыть это приложение и начать работать через сайт.");
Сам метод postData()
public String postData(String login) { HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 7000); HttpConnectionParams.setSoTimeout(httpParams, 7000); HttpClient httpclient = new DefaultHttpClient(httpParams); getClass(); HttpPost httppost = new HttpPost(PROFILE_SRV_URL); try { List<NameValuePair> nameValuePairs = new ArrayList(6); nameValuePairs.add(new BasicNameValuePair("login", login)); nameValuePairs.add(new BasicNameValuePair("imei", getIMEI())); nameValuePairs.add(new BasicNameValuePair("mac", getMAC())); nameValuePairs.add(new BasicNameValuePair("model", getModel())); nameValuePairs.add(new BasicNameValuePair("serial", getSerial())); nameValuePairs.add(new BasicNameValuePair("android", getAndroid())); nameValuePairs.add(new BasicNameValuePair("phone", getPhoneNumber())); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpclient.execute(httppost).getEntity().getContent())); StringBuilder stringBuilder = new StringBuilder(); while (true) { String readLine = bufferedReader.readLine(); if (readLine == null) { return stringBuilder.toString(); } stringBuilder.append(readLine); } } catch (Exception e) { Log.e("HelloWorld", Log.getStackTraceString(e)); return e.getMessage(); } }
Это метод принимает входящим параметром строку с логином. Далее к логину приплюсовываются данные, которые мы видели над полем логина (IMEI + MAC + модель устройства + серийник + Android + номер телефона)