您的位置:首页 > 房产 > 家装 > 网页设计图片切换代码_网站维护一般要几天_营销推广的特点_全媒体运营师报名费多少钱

网页设计图片切换代码_网站维护一般要几天_营销推广的特点_全媒体运营师报名费多少钱

2024/10/5 22:27:54 来源:https://blog.csdn.net/qq_34629725/article/details/142059459  浏览:    关键词:网页设计图片切换代码_网站维护一般要几天_营销推广的特点_全媒体运营师报名费多少钱
网页设计图片切换代码_网站维护一般要几天_营销推广的特点_全媒体运营师报名费多少钱

概述:
从Android 7开始,将不允许在app之间,使用file uri,即file://的方式,传递一个file,否则会抛出异常:FileUriExposedException ,其解决方案,就是使用FileProvider,用content://代替file://,同时需要将targetSdk,升级到24。主要用于系统相机拍照及图片裁剪、应用之间数据访问、应用的升级等。

普通应用中使用

  1. 创建FileProvider,继承自FileProvider,这里我用的androidx.core.content.FileProvider
    在这里插入图片描述

  2. 创建file_paths.xml
    在这里插入图片描述
    详细相关配置,可查看fileprovider官网
    在这里插入图片描述

  3. 在AndroidManifest中,配置provider,以及file_paths
    在这里插入图片描述

  4. 使用,这里我们已app升级为例
    在这里插入图片描述

系统应用中使用,就是加了:android:sharedUserId=“android.uid.system”

会发现报异常如下:

会发现这样一条警告日志:

UriGrantsManagerService:ActivityManager: For security reasons, the system cannot issue a Uri permission grant to **** use startActivityAsCaller() instead

,原因是Android 11 ,限制了系统应用对fileProvider的使用,看一下源码,是不是似曾相识:
在这里插入图片描述
注意这里,源码位置,我这边是MTK Android 11的源码,位置不同,是在uri下的 UriGrantsManagerService.java中,而且方法名是checkGrantUriPermissionUnlocked(),并非在AMS中
可以看到,假如我们的app,是系统app或者root app,并且提供的uri的authority不是,“com.android.settings.files”时,打印上述的警告,并返回-1。
修改:
这里我们添加一个条件,可以直接添加我们fileprovider对应的包名
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com