【问题标题】:JSONObject returns null in Android 10?JSONObject 在 Android 10 中返回 null?
【发布时间】:2021-01-18 22:46:00
【问题描述】:

我在运行 Android 8 的手机和运行 Android 8.1 的平板电脑上安装了一个用于工作的私有应用程序,并且两者都运行良好,但是当我将它安装在运行 Android 10 的新手机上时,它给了我一个 JSON 错误。该应用程序的其余部分工作正常,但它显示 JSONObject 为空。这只是一个设置还是随着 Android 10 的变化而有所改变?

@Override
        protected Void doInBackground(Void... arg0) {

            HttpJsonParser httpJsonParser = new HttpJsonParser();
            Map<String, String> httpParams = new HashMap<>();
            
            JSONObject jsonObject = httpJsonParser.makeHttpRequest(GET_VERSION_URL, "GET", httpParams);

            if (jsonObject != null) { // <- Returns fine on Android 8.1 but not Android 10

                try {
                    ...
                } catch (final JSONException e) {
                    ...
                }

            } else {
                MainActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,"Error.", Toast.LENGTH_LONG).show(); // <-Goes to this everytime
                    }
                });
            }

            return null;

        }

【问题讨论】:

    标签: android json


    【解决方案1】:

    我认为您的问题不在于 JSONObject 本身。更可能与 Android 中 HTTP 调用方式的变化和限制有关。新版本引入了一些更改,例如:

    • 要求使用 HTTPS 发出所有请求。
    • 弃用旧的 HTTP 客户端,如 Apache 的客户端。

    启用配置标志可以绕过其中一些限制,这将为您提供更多时间来更新您的实现。但推荐的方法是遵循新指南,停止使用已弃用的东西。

    转到here,并检查“所有应用的行为更改”和“针对 API XX+ 的应用的行为更改”页面,了解您的应用无法运行的 Android 版本。这将为您提供有关这是否是问题的线索。

    【讨论】:

    • 你完全正确!它是我很快找到here 的 URL 更改。感谢您提供信息和链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多