我的项目针对的是SDK27,并且运行良好且经过了严格的测试。由于Google Play想要定位到SDK28,因此我将定位更改为SDK28。
[此后,我开始在(仅)Android 9中连接服务器时出现问题。由于服务器没有https(我的是一个小应用程序),因此这是clearTextTraffic禁用的问题。在AndroidManifest.xml中添加android:usesCleartextTraffic="true"
后,此问题已解决,并且应用程序再次像以前一样连接到服务器。
我也有一个使用MultipartUploadRequest的图片上传页面,并且在SDK28之后也失败了,并且在android 9中仍然无法解决(它以前肯定可以正常工作,即使在其他android版本中也可以正常工作)。因此,我几乎可以确定这是与clearTextTraffic和文件上传有关的问题(或至少与targetSDK更改有关)。但不确定如何解决此问题。我正在使用okhttp。任何帮助是极大的赞赏。
好的,原来是FOREGROUND_SERVICE的android权限问题。
定位到API Build.VERSION_CODES.P或更高版本的应用程序必须请求权限Manifest.permission.FOREGROUND_SERVICE才能使用此API。
解决方案是添加此行
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
在AndroidManifest.xml
中
详细答案here