Приложение для обновления аккаунта на сервере
Приложение для обновления аккаунта очень примитивно. При открытии приложения мы видим информацию об устройстве и поле ввода, в которое необходимо ввести логин состоящий из цифр.
После ввода аккаунта и нажатия кнопки "обновить" приложение подключается к серверу, и обновляет баланс аккаунта.
Внутренности приложения
Сорцы приложения доступны по ссылке
Вся логика приложения находится в одном классе 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 + номер телефона)