开发者社区> 问答> 正文

集成融合认证sdk,在android8.0手机上闪退

集成融合认证sdk,调用alicomFusionBusiness?.startSceneWithTemplateId(this, "100001")方法,在android8.0手机上闪退,log如下:
java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
可能是未适配android8.0的一个特性:只有全屏不透明的activity可以设置orientation

展开
收起
游客gtzs7z72okjbg 2023-10-24 15:07:25 107 0
来自:阿里云通信
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    看起来像是因为你的应用试图在一个非全屏透明的活动上设置方向旋转(orientation),但是在Android 8.0及更高版本中,只有全屏不透明的活动才能这样做。
    这个问题的解决办法是在你调用startSceneWithTemplateId()之前,先检查一下当前的Activity是否满足全屏不透明的条件。你可以通过检查getActivityInfo().configChanges来判断是否设置了屏幕方向旋转。
    如果你的Activity确实没有设置全屏不透明或不关心屏幕方向旋转,那么你应该取消或调整这些设置,然后再次调用startSceneWithTemplateId()方法。如果你的Activity必须保持某种特殊的布局,那么你可能需要修改你的代码以适应这种限制。
    另外,如果你的应用需要使用方向旋转或其他系统级别的权限,那么你还需要确保在AndroidManifest.xml文件中正确地声明了这些权限。

    2023-10-25 14:30:02
    赞同 展开评论 打赏
  • 从你提供的错误信息来看,这是一个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不是全屏的,你可能需要调整你的布局,使其适应全屏。

    2023-10-25 10:41:30
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载