android - 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。任何帮助是极大的赞赏。
解决方案
好的,原来是 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 证书。很容易。
推荐阅读
- sql - Azure Synapse Analytics 专用 SQL 池 - IIF 语句不起作用
- javascript - 如何在播放另一种音乐时使用 bolean 来停止一种音乐
- java - 检查 Java 可选映射管道中的枚举 valueOf
- gazebo-simu - MatLab 和 Gazebo 之间的联合仿真
- python - 根据其他行从熊猫数据框中删除行
- python - 具有确定时间间隔的熊猫 to_datetime
- django - 如何在 Django 模型的一对多相关字段上执行条件聚合?
- c++ - c ++对象成员函数按字母顺序对列表进行排序
- javascript - PuppeteerSharp 正在更改从 textContent 获取的日期格式
- php - Laravel Config Auth 在警卫上缺少 api