记上架GooglePlay提升targetSdkVersion导致的适配问题

升级targetSdkVersion后遇到权限动态申请和应用升级、拍照获取图片异常。权限问题采用RxPermissions解决,7.0以上系统因安全原因禁止file:// URI,需使用content:// URI并配置AndroidManifest、@xml/filepaths,详细步骤包括在manifest中配置,创建filepaths资源文件,以及在代码中正确创建Uri。
摘要由CSDN通过智能技术生成

升了targetSdkVersion,出现了一些适配的问题,还有权限的问题,实在是不想升,但是没办法Google爸爸要求必须要升,硬着头皮上了。

我主要是面临两个方面的问题:
(1)权限的动态申请
(2)应用升级、拍照获取图片异常(这两个是同一个问题)

对于权限问题,相对来说还是比较简单的,我是采用了RxPermissions来做的。对于运行时权限有兴趣的可以去了解一下。主要是说第二个问题。

原来的话是定义一个文件地址,然后通过Uri.fromFile(cameraFile)就可以获取到相应的Uri,但是7.0往上,发现崩了。。。查了一下资料,原来是为了安全起见,面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。公开的话会抛出 FileUriExposedException 异常。要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。具体步骤如下:
(1)配置AndroidManifest

  <provider
            android:name="android.support.v4.content.FileProvider"
            
当将Android项目的`targetSdkVersion`升级到Android 11 (API级别30)及以上时,可能遇到与`ConstraintLayout`相关的错误,这是因为新版本的系统对布局组件的行为进行了调整,尤其是在处理视图约束(Constraints)上。 在Android 11中,Google引入了一些新的变化,比如View Binding API,这可能导致之前基于旧版SDK使用的依赖库或XML约束配置不再适用。当你尝试运行应用时,`ConstraintLayout`可能抛出关于`Constraints`解析或支持的问题,例如找不到视图、约束冲突等。 解决这个问题通常需要做以下步骤: 1. **检查约束设置**:确保你的`ConstraintLayout` XML文件里的约束(如`app:layout_constraint*`属性)已经适应了最新的约束语法,特别是在使用`androidx.constraintlayout.widget.ConstraintLayout`而不是旧版`com.android.support.constraint.ConstraintLayout`。 2. **更新依赖**:如果你正在使用第三方库,确认其是否支持Android 11以上的版本,并将其更新到最新版本。 3. **启用View Binding**:如果尚未启用,可以在`build.gradle`文件中添加`implementation 'androidx.databinding:viewbinding:4.1.0'`并创建对应的`ViewModel`绑定类。 4. **检查并修复错误**:运行应用,查看错误日志,找出具体的错误提示,根据它提供的信息修改布局或代码。 5. **测试兼容**:在模拟器和真机上分别测试,确保在所有目标API级别上都能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值