微信手机网站三合一,网页制作软件简介,给别人做网站收多少钱,贵阳花溪区概述#xff1a; 从Android 7开始#xff0c;将不允许在app之间#xff0c;使用file uri,即file://的方式#xff0c;传递一个file#xff0c;否则会抛出异常#xff1a;FileUriExposedException #xff0c;其解决方案#xff0c;就是使用FileProvider#xff0c;用c…概述 从Android 7开始将不允许在app之间使用file uri,即file://的方式传递一个file否则会抛出异常FileUriExposedException 其解决方案就是使用FileProvider用content://代替file://,同时需要将targetSdk升级到24。主要用于系统相机拍照及图片裁剪、应用之间数据访问、应用的升级等。
普通应用中使用 创建FileProvider,继承自FileProvider这里我用的androidx.core.content.FileProvider 创建file_paths.xml 详细相关配置可查看fileprovider官网 在AndroidManifest中配置provider以及file_paths 使用这里我们已app升级为例
系统应用中使用就是加了android:sharedUserId“android.uid.system”
会发现报异常如下
会发现这样一条警告日志
UriGrantsManagerServiceActivityManager: 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对应的包名