首页 > 解决方案 > android 9文件上传(MultipartUploadRequest)错误

问题描述

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

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

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

标签: androidfile-uploadmultipartcleartext

解决方案


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

以 API Build.VERSION_CODES.P 或更高版本为目标的应用必须请求 Manifest.permission.FOREGROUND_SERVICE 权限才能使用此 API。

解决方案是添加这一行

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

AndroidManifest.xml

详细解答在这里

此外,如果其他人因为您没有 SSL 证书而遇到 clearText 错误的问题,Let's encrypt 是一个提供免费 SSL 证书的非盈利证书提供机构。检查这里这里。您可以使用第二个链接中的软件在您的服务器中轻松应用和安装 Let's encrypt SSL 证书。很容易。


推荐阅读