第三方Activity报错"Only fullscreen opaque activities can request orientation"
最近收到谷歌通知,需要将targetSDKVersion升级到28,在升级到28之后报如上错误,简单说就是只有全屏不透明activity才能固定页面方向,具体对这个报错的分析我就不多说了,大家可以参考这篇博客Only fullscreen activities can request orientation终极解决方法
根据日志我找出出错的Activity,发现其中有部分是我自己项目定义的,这一部分基本通过修改配置文件都好解决,但同时出现了一部分第三方SDK中的Activity。
我的项目中是用到AliPayHK,提示其中的PayResultActivity报这个错,但是官方提供的DEMO在8.0的机器上又没问题,所以肯定是我使用方式有问题。
**报错原因:**研究发现第三方的screenOrientation都设置成了behind,behind意味着该Activity的方向继承Activity栈中上一个Activity的方向,而我上一个Activity的确是固定了方向的,所以才会导致报错
**解决:**不能简单的将前一个Activity方向设置成非固定的,因为产品要求必须是固定方向的。基本思路是当判断当前系统是Android8.0的时候在要跳转到PayResultActivity之前将当前页面方向设置成fullsensor,在第三方回调之后再将当前页面方向设置成固定方向的即可.
currentActivity.setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
currentActivity.setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
网上搜到的关于这个报错的解决方案基本都是针对自己定义的Activity的,很少有针对第三方Activity的,把我的填坑记录在此希望对大家有帮助。