当我进行任何网络活动(特别是通过InputStream读取文本)时,我的应用程序崩溃,但仅限于Android Pie。我已经使用运行各种API版本的仿真器对其进行了尝试,但这仅在API 28上发生。我也已在运行Pie的实际电话上对其进行了尝试,并且它也在那里崩溃了。该应用程序在所有其他Android版本afaik上均可正常运行。
日志显示如下:
2018-12-09 14:59:16.917 6864-6925/<package> E/AndroidRuntime: FATAL EXCEPTION: Thread-4
Process: <package>, PID: 6864
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at <package>.<Activity class>.<method>(<Activity class>.java:304)
我的代码中导致堆栈跟踪的语句是:
BufferedReader br = new BufferedReader(new InputStreamReader(text));
上面的text = con.getInputStream();
,在我调试时返回null
。 con
是URLConnection
,用于打开到特定URL的连接。 con
的值似乎还不错,并且与不同API版本上的con
值相同。
因此,罪魁祸首似乎是text = con.getInputStream();
,它通常在API 27及更低版本上返回,但在Pie上返回null
。
有什么想法会导致这种情况吗?让我知道我是否还能提供更多信息。
答案 0 :(得分:0)
好的,我弄清楚了为什么问题只出在Pie上。 Pie实施HTTPS,而我使用的URL是HTTP,这就是getInputStream()
在连接上返回null
的原因。
我按照here的步骤进行了修复。