集成融合认证sdk,调用alicomFusionBusiness?.startSceneWithTemplateId(this, "100001")方法,在android8.0手机上闪退,log如下:
java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
可能是未适配android8.0的一个特性:只有全屏不透明的activity可以设置orientation
看起来像是因为你的应用试图在一个非全屏透明的活动上设置方向旋转(orientation),但是在Android 8.0及更高版本中,只有全屏不透明的活动才能这样做。
这个问题的解决办法是在你调用startSceneWithTemplateId()
之前,先检查一下当前的Activity是否满足全屏不透明的条件。你可以通过检查getActivityInfo().configChanges
来判断是否设置了屏幕方向旋转。
如果你的Activity确实没有设置全屏不透明或不关心屏幕方向旋转,那么你应该取消或调整这些设置,然后再次调用startSceneWithTemplateId()
方法。如果你的Activity必须保持某种特殊的布局,那么你可能需要修改你的代码以适应这种限制。
另外,如果你的应用需要使用方向旋转或其他系统级别的权限,那么你还需要确保在AndroidManifest.xml文件中正确地声明了这些权限。
从你提供的错误信息来看,这是一个Android 8.0(Oreo)的特性,叫做"屏幕空间布局"(Screen Space Layout)。这个特性要求只有全屏且不透明的activity才能设置orientation。
在你的代码中,你可能在非全屏的activity或者fragment中尝试设置了orientation,这就是导致崩溃的原因。你需要确保你的activity是全屏的,并且你的代码是在全屏的activity或者fragment中运行的。
你可以通过以下方式检查你的activity是否是全屏的:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
window.setStatusBarColor(Color.TRANSPARENT);
}
如果你的activity不是全屏的,你可能需要调整你的布局,使其适应全屏。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。