升级Android Q API 29遇到的一些问题

最近重构之前的项目,target sdk 干脆就设置到29了,结果遇到了之前没有遇到的一些问题,在这总结一下。

1是使用File去创建图片文件的时候一直不成功,看log是显示没有权限,但是我的清单文件中已经申明了相关权限

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

而且再代码中也添加了动态权限,使用File.isReadable()判断使用系统图库中获取的Uri创建的图片文件时一直显示没有权限

open failed: EACCES (Permission denied)

后来发现是Android Q中做了限制,解决方案是在清单文件中application标签下添加可以解决

android:requestLegacyExternalStorage="true"

可以参考华为的Android Q适配文档:

Google Q版本应用兼容性整改指导

第二个问题是登录注册的时候一直显示失败,这个功能之前target version 27的时候不会出现,通过debug发现是google对http请求做了限制,google一直在推https,之前chrome浏览器就会对http请求做出风险提示,现在终于对Android下手了

解决方法同样是在AndroidManifest中的Application标签下添加

android:usesCleartextTraffic="true"

这句的意思是平台组件接受明文数据传输,设置为false时将将拒绝应用程序使用明文流量的请求,目前如果不设置默认是false的。

当然我目前是开发测试,如果真正上线的话还是需要设置为true的,建议客户端和服务器都使用https传输。

发布了28 篇原创文章 · 获赞 27 · 访问量 8302

猜你喜欢

转载自blog.csdn.net/weixin_44666188/article/details/104969160