一:老旧项目在 9.0手机上老弹出 Dialog
解决办法:
private void closeAndroidPDialog(){ try { Class aClass = Class.forName("android.content.pm.PackageParser$Package"); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); declaredConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } try { Class cls = Class.forName("android.app.ActivityThread"); Method declaredMethod = cls.getDeclaredMethod("currentActivityThread"); declaredMethod.setAccessible(true); Object activityThread = declaredMethod.invoke(null); Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); mHiddenApiWarningShown.setAccessible(true); mHiddenApiWarningShown.setBoolean(activityThread, true); } catch (Exception e) { e.printStackTrace(); } }
二:适配网络请求
9.0要求使用安全的网络访问,如果项目使用的是http请求方式而非https,请求会失败。
解决方案:
一、APP改用https请求
这种方式需要接口去协调,把请求域名改为https。
二、targetSdkVersion 降到27以下
三、在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定) ,内容如下,大概意思就是允许开启http请求。
然后在APP的AndroidManifest.xml文件下的application标签增加以下属性:
android:networkSecurityConfig="@xml/network_security_config"
新增问题:上一个 xml 的配置只是解决了自己应用使用 okhhtp3 的问题。现在发现 OSS 上传图片也无法成功,一样是因为不安全的网络访问导致的,把 xml 文件的写法改成这样:
需要注意的是:你的服务端接口地址不要加 http:// 前缀,如果是 ip 地址,还不能加端口号。