2017-01-16 2 views
-3

Я разработал приложение, все время использую настоящее устройство (samsung note 5), иногда используется эмулятор в качестве тестового устройства. Сегодня я загружаю приложение для воспроизведения в магазине. Как объясняется в заголовке, когда я или мои друзья загружают приложение и запускают его, он не может получить данные из Интернета, а объявление пусто. Но все время разработки я не сталкивался с этой ситуацией. Я не понимаю.Когда я загружаю свое приложение из Play Маркета, он не может получить доступ к Интернету, почему?

Первое фото, реальное устройство, подключенное к компьютеру с помощью кабеля, я запускаю приложение Android Studio, apk отправляется в студию Android на мое настоящее устройство. Закройте и запустите его снова, закройте и запустите снова. Результат тот же. Все в порядке.

https://i.stack.imgur.com/CQgOJ.jpg

Второе фото, загруженных из игры магазина и запустить приложение. Все тексты и шары пусты.

https://i.stack.imgur.com/7azlc.png

Manifest.xml

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="com.android.vending.BILLING" /> 

Spinner Изделие выбрано (Нет тост mesaage появляется в управлении приложением)

private AdapterView.OnItemSelectedListener spinnerOnItemSelectedListener = new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     mDrawDateSpinnerPosition = position; 
     final String drawDate = parent.getItemAtPosition(position).toString(); 

     if (NetworkUtil.getConnectivityStatus(getContext())) { 
      mProgressDialog = ProgressDialog.show(getContext(), getResources().getString(R.string.please_wait), getResources().getString(R.string.loading), true, false); 

      new Handler().post(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         mVolleyUtil.makeRequestForLotto(
           getContext(), 
           Constants.SAYISAL, 
           DateUtil.formattedDateToNewFormattedDate(drawDate, Constants.DD_MM_YYYY, Constants.YYYY_MM_DD), 
           createSuccessListener(drawDate), 
           createErrorListener(drawDate)); 
        } catch (Exception e) { 
         Log.e("spinnerSelectedListener", e.getMessage()); 
        } 
        mProgressDialog.dismiss(); 
       } 
      }); 
     } else { 
      ToastUtil.show(getContext(), R.string.no_internet_access, Toast.LENGTH_LONG); 
     } 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}; 

CreateErrorListener (Нет тост сообщений появляется в снаряженном приложение)

private Response.ErrorListener createErrorListener(final String drawDate) { 
    return new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      mVolleyUtil.getVolleyController().cancelPendingRequests(this); 
      mResult = null; 
      mProgressDialog.dismiss(); 
      if (!NetworkUtil.getConnectivityStatus(getContext())) { 
       ToastUtil.show(getContext(), R.string.no_internet_access, Toast.LENGTH_LONG); 
      } else { 
       ToastUtil.show(getContext(), "Error occured, try again.", Toast.LENGTH_LONG); 
      } 
     } 
    }; 
} 

VolleyRequest

mVolleyController.getRequestQueue().add(
        new GsonRequest<>(Request.Method.GET, link + drawDate + ".json", 
          createErrorListener, LottoDTO.class, createSuccessListener)); 

Пожалуйста, дайте мне идею. Что происходит?

+0

Вы пытались установить подписанный APK (тот, который вы загружаете в Google Play) прямо на устройство? – timbillstrom

+0

@timbillstrom Я попробовал сейчас, когда вы сказали это, это тот же результат, что и вторая фотография. Все тексты и шары пусты, реклама не заполнена. – hebset

+0

Я нашел ошибку. На самом деле это не настоящая ошибка. В GsonRequest ссылка выглядит так: h_t_t_p _: _/_/_ w_w_w .... (забыть о подчеркивании) Если подписанный APK запускается на устройстве, эта ссылка не отправляет данные, если на APC запущена обычная APK, эта ссылка отправляет данные успешно. Это проблема сертификации? – hebset

ответ

0

Я нашел решение своего вопроса. ıf minified включен, вы должны использовать @serializedname в классе pojo (model). Как это:

public class LottoDTO implements Serializable { 
@SerializedName("success") 
private boolean success; 

public boolean isSuccess() { 
    return success; 
} 

public void setSuccess(boolean success) { 
    this.success = success; 
} 
} 

Так GSON знает, как соответствовать данным между POJO и объектом JSON.

Решение от: https://stackoverflow.com/a/30002203/3605998

Теперь, все в порядке. Благодарю.

Смежные вопросы