【问题标题】:When I download my app from Play Store, it cannot access Internet, why?当我从 Play Store 下载我的应用程序时,它无法访问 Internet,为什么?
【发布时间】:2017-05-31 09:14:00
【问题描述】:

我开发了一个应用程序,我一直使用真机(三星注 5),有时使用模拟器作为测试设备。今天我将应用程序上传到 play store。如标题中所述,当我或我的朋友下载并运行该应用程序时,它无法从 Internet 获取数据并且 adview 为空白。但是在所有的开发时间里,我都没有遇到过这种情况。我不明白。

第一张照片,真实设备通过电缆连接到计算机,我通过Android Studio运行应用程序,apk被发送到Android studio到我的真实设备。关闭并再次运行,关闭并再次运行。结果是一样的。一切正常。

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

第二张照片,从 Play 商店下载并运行应用程序。所有文字和球都是空的。

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 Item Selected(正在运行的应用程序中没有显示 Toast 消息)

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(正在运行的应用程序中不会出现 toast 消息)

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));

请给我一个想法。发生了什么?

【问题讨论】:

  • 您是否尝试过直接在设备上安装已签名的 APK(您要上传到 Google Play 的那个)?
  • @timbillstrom 当你这么说的时候我现在试过了,结果和第二张照片一样。所有文本和球都是空的,adview 是空白的。
  • 我发现了错误。其实不是真正的错误。在 GsonRequest 中,链接是这样的:h_t_t_p_:_/_/_w_w_w....(下划线忘了) 如果签名的 APK 在设备上运行,这个链接不发送数据,如果正常的 APK 在设备上运行,这个链接正在发送数据成功。是认证问题吗?

标签: android permissions android-volley


【解决方案1】:

我找到了自己问题的解决方案。 如果启用了 minified,则必须在 pojo(model) 类中使用 @serializedname。 像这样:

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

现在,一切正常。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多