android9 文件上传(MultipartUploadRequest)错误

android 9 file upload (MultipartUploadRequest) error

我的项目以 SDK27 为目标,运行良好且经过严格测试。由于 google play 想以 SDK28 为目标,我将目标更改为 SDK28。

在此之后,我开始在(仅)android 9 中连接到服务器时出现问题。结果是 clearTextTraffic 禁用问题,因为服务器没有 https(我的是一个小应用程序)。在 AndroidManifest.xml 中添加 android:usesCleartextTraffic="true" 后,此问题已解决,应用程序再次像以前一样连接到服务器。

我也有一个使用 MultipartUploadRequest 的图片上传页面,这在 SDK28 之后也失败了,这在 android 9 中仍然没有修复(它之前肯定可以工作,即使现在在其他 android 版本)。所以,我几乎可以肯定这是 clearTextTraffic 和文件上传相关的问题(或者至少与 targetSDK 更改相关)。但不确定是什么或如何解决这个问题。我正在使用 okhttp。任何帮助是极大的赞赏。

好的,原来是 FOREGROUND_SERVICE 的 android 权限问题。

Apps targeting API Build.VERSION_CODES.P or later must request the permission Manifest.permission.FOREGROUND_SERVICE in order to use this API.

解决方法是添加这一行

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

AndroidManifest.xml

详细解答

此外,如果由于您没有 SSL 证书而导致其他人遇到明文错误问题,Let's encrypt 是一个提供免费 SSL 证书的无营利证书提供机构。检查 here and here。您可以使用秒 link 中的软件轻松地在您的服务器中申请和安装 Let's encrypt SSL 证书。很简单。