App的版本从22升到25出现的问题记录

简介: 由于同事要引入一个视频监控的库文件,所以最近在开发的一个App不得不从22升到25,然而升到25之后各种问题就涌现了,记录一下。问题一:使用的MultiImageSelector第三方库在拍照时发生crash的问题。

由于同事要引入一个视频监控的库文件,所以最近在开发的一个App不得不从22升到25,然而升到25之后各种问题就涌现了,记录一下。

问题一:使用的MultiImageSelector第三方库在拍照时发生crash的问题。

原因:在版本为25时,从文件获取Uri,不能再使用Uri.fromFile("文件名")。例如在该第三方库的MultiImageSelectorFragment类中,有这样一行代码:

intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));

我们需要把它如下

Uri tmpFileURI = FileProvider.getUriForFile(this.getContext(), this.getActivity().getApplicationContext().getPackageName() + ".provider", mTmpFile);               intent.putExtra(MediaStore.EXTRA_OUTPUT, tmpFileURI);
在上面的代码中我们看到一个".provider",这个是就是我们自己创建的一个存放文件的路径,首先我们要在清单文件的Application下面加上这样一段配置:

<provider
            android:authorities="me.nereo.multi_image_selector.provider"
            android:name="android.support.v4.content.FileProvider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
</provider>
其中me.nereo.multi_image_selector就是包名,也就是说authorities要设置成"包名.provider",当然这个provider也可以设置成任意名字,但一定要保证和getUriForFile方法里面的一致,不然会找不到。接着我们要在res目录下新建一个“xml”的文件夹,在里面新建一个文件,文件中的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <!-- external-path:sd ;path:你的应用保存文件的根目录;name随便定义-->
    <!-- root-path 手机存储根目录 -->
    <root-path path="." name="multi_image_selector" />
</paths>
这样我们就解决crash的问题,同样地如果我们在调用拍视频时也用到了Uri的fromFile()方法也是这样改,我的项目中就碰到了这样的情况。不过由于我在项目的清单文件中也用到了<provider android: authorities ... />,所以出现了一个bug:

Manifest merger failed with multiple errors

有没有觉得这个bug很眼熟,其实就是authorities重复了,加上一句 tools:replace="authorities"就解决了。


问题二:获取手机deviceId发生crash,这个就涉及到动态权限获取了,网上解决方法很多,就不赘述了。




目录
相关文章
|
1月前
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
139 77
|
1月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
179 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
7月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
5月前
|
开发工具 iOS开发 MacOS
【Mac_mistake】app不能安装在未命名需要OSv11.13或更高版本
【Mac_mistake】app不能安装在未命名需要OSv11.13或更高版本
275 0
|
8月前
|
人工智能
魔搭多模态AI单词助记&通义APP即时口语练习,你从未体验过的全新版本!
首次接触魔搭多模态AI单词助记工具让我颇感惊喜。传统背单词方式枯燥低效,而该工具通过生成关联图像、短语或故事,让记忆变得生动有趣。访问[Word-wizard](https://modelscope.cn/studios/makabakaing/Word-wizard)体验其图文记忆和视觉学习功能。目前图文记忆功能似乎存在问题,但视觉学习功能仍可正常使用,能识别图片特征并生成释义和例句,辅助学习效果不错。此外,可通过通义APP实现即时口语练习,尽管缺乏上下文记忆功能,但仍是一个优秀的练习工具。
|
7月前
|
开发者
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道
|
10月前
|
数据安全/隐私保护 iOS开发 开发者
hbuilderx打包应用上传到app store构建版本的教程
hbuilderx打包应用上传到app store构建版本的教程
124 0
|
8月前
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
228 0
|
10月前
|
移动开发 小程序 前端开发
开发指南022-多版本APP的账号统一
移动前端有多种形态,对于管理系统领域主要有4种形态

热门文章

最新文章

  • 1
    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
  • 2
    Axure原型模板与元件库APP交互设计素材(附资料)
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【Azure Function】Function App门户上的Test/Run返回错误:Failed to fetch
  • 8
    仿第八区APP分发下载打包封装系统源码
  • 9
    (ERP系统查看DWG)MxCAD APP调用内部弹框的方法
  • 10
    2025同城线下陪玩APP开发/电竞游戏平台搭建游戏陪玩APP源码/语音APP开发