Временно сохраняйте объект JSON и отправляйте его в Volley, когда Интернет доступен - PullRequest
0 голосов
/ 25 октября 2018

Я использую Volley в приложении.Я отправляю данные с помощью REST Api на сервер.Это запрос JSON POST на сервер.

private void add() {
        String NetworkStatus = biz.fyra.bookapp.utils.NetworkStatus.checkConnection(getContext());
        if (NetworkStatus.equals("false")) {
            alert.noInternetAlert(getActivity());
        } else {
            JSONObject info = new JSONObject();
            try {
                info.put("name", full_name);
                info.put("phone", foodie_contact);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, ApiUrls.ADD, info, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }) {
            };
            AppController.getInstance().addToRequestQueue(request);
        }
    }  

Если Интернет доступен, я могу отправить данные на сервер.Но если Интернет недоступен, мне нужно временно где-то хранить этот объект JSON, а когда Интернет доступен, мне нужно отправить все объекты JSON на сервер, которые были сохранены локально.Как этого добиться?

1 Ответ

0 голосов
/ 25 октября 2018

Для этого вам необходимо выполнить следующие шаги.

  1. Проверить, подключен ли интернет.
  2. Если интернет подключен, отправить вызов.
  3. Если Интернет не подключен, вы можете преобразовать Json в строку и сохранить его в общих настройках или в базе данных.
  4. Затем необходимо создать широковещательный приемник для проверки подключений к Интернету и
  5. , когдакогда вы получаете сообщение для активного интернета, вам нужно отправить ожидающие данные на сервер.

ОБНОВЛЕНИЕ Для создания приемника вещания

public class NetworkChangeReceiver extends BroadcastReceiver {

@Override
public void onReceive(final Context context, final Intent intent) {
    final ConnectivityManager connMgr = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    final android.net.NetworkInfo mobile = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (wifi.isAvailable() || mobile.isAvailable()) {
        Log.d("Network Available ", "Flag No 1");
    }
}

}

А затем в вашем теге приложения в файле Menifest Добавить фильтр намерений

<receiver android:name=".NetworkChangeReceiver" >
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>
...