作者:书友74562696 | 来源:互联网 | 2024-11-13 09:46
本文介绍了在使用PictureSelectorLight第三方框架时遇到的Onlyfullscreenopaqueactivitiescanrequestorientation错误,并提供了一种有效的解决方案。
1. 问题背景
在开发拍照和选择相册图片的功能时,我使用了一个功能强大的第三方框架PictureSelectorLight。该框架支持多种操作,但在某些设备上遇到了兼容性问题。具体来说,我在小米6X(8.0)和华为荣耀畅玩6X(8.0)上遇到了错误,而在小米6X和荣耀畅玩4X(5.0)上运行正常。
错误信息如下:
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
大致意思是只有不透明的全屏Activity可以自主设置界面方向。
2. 错误展示
以下是错误的详细截图:
由于问题是第三方库引起的,我们无法直接修改其代码或样式。
3. 解决方案
根据错误信息,我们需要确保Activity是不透明且全屏的。以下是几种常见的解决方法:
3.1 修改主style使其透明
在主style中添加透明属性:
3.2 移除AndroidManifest.xml中的方向设置
在主AndroidManifest.xml文件中移除screenOrientation
属性。
3.3 定义一个透明的Activity主题
增加android:windowIsTranslucent
属性为true,并设置透明背景。对于需要使用对话框样式的Activity,可以对照对话框的Theme进行设置。
3.4 降低targetSdkVersion
以上方法在我的项目中并不奏效,因为我的style已经是透明的,且AndroidManifest.xml中没有方向设置。于是,我查看了PictureSelectorLight的GitHub页面,发现了一些重要的提示。
我的gradle配置如下:
compileSdkVersion 27 defaultConfig { applicationId "com.clfsjkj.govcar" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true // 添加如下配置 javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } ndk { abiFilters 'armeabi' } }
尝试将targetSdkVersion
从26(8.0)降到23(6.0),然后重新构建并运行项目,结果成功解决了问题。
如果上述方法不适用于您的情况,可以尝试降低targetSdkVersion
来解决问题。
本文仅为记录开发过程中遇到的问题及解决方法,希望对您有所帮助。
end.