Advertisement

Android 7.0行为变更下的File Provider适配方法

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍了在Android 7.0系统中,由于其安全策略的变化,对文件共享机制进行了调整。重点讲解了如何使用FileProvider类进行适配,以解决目标API级别为24或更高的应用无法访问其他应用的文件的问题,并提供了具体的实现方法和示例代码,帮助开发者轻松完成相关功能更新。 在Android 7.0及其以上版本中,适配File Provider是一种特殊的ContentProvider方法,它帮助开发者将文件安全地共享给其他应用程序。通过创建content:// Uri来替代不推荐使用的file:/// Uri, FileProvider避免了可能触发的FileUriExposedException。 第一步是定义FileProvider,在AndroidManifest.xml 文件中的标签内添加一个provider 标签: ```xml ``` 第二步是创建一个XML文件,例如res/xml/file_paths.xml,并在其中指定应用需要共享的目录。这可以通过使用以下五种类型的路径元素来实现: - files-path:代表内部存储空间中应用私有目录下的files/ 目录。 - cache-path:代表内部存储空间中应用私有目录下的cache/ 目录。 - external-path:代表外部存储空间根目录。 - external-files-path:代表外部存储的文件路径,类似于Context.getExternalFilesDir(null)所获取的路径。 - external-cache-path:代表外部缓存区域。 第三步是使用FileProvider类提供的getUriForFile方法来检索文件的Content URI: ```java Uri uri = FileProvider.getUriForFile(context, com.example.myapp.fileprovider, file); ``` 第四步,为了将URI的安全性传递给其他应用,需要调用grantUriPermission() 方法。 第五步是使用Intent 将获取到的URI 传送给另一个应用程序: ```java Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, image/*); startActivity(intent); ``` 通过以上步骤适配File Provider的方法可以更安全地共享文件给其他应用。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Android 7.0File Provider
    优质
    本文介绍了在Android 7.0系统中,由于其安全策略的变化,对文件共享机制进行了调整。重点讲解了如何使用FileProvider类进行适配,以解决目标API级别为24或更高的应用无法访问其他应用的文件的问题,并提供了具体的实现方法和示例代码,帮助开发者轻松完成相关功能更新。 在Android 7.0及其以上版本中,适配File Provider是一种特殊的ContentProvider方法,它帮助开发者将文件安全地共享给其他应用程序。通过创建content:// Uri来替代不推荐使用的file:/// Uri, FileProvider避免了可能触发的FileUriExposedException。 第一步是定义FileProvider,在AndroidManifest.xml 文件中的标签内添加一个provider 标签: ```xml ``` 第二步是创建一个XML文件,例如res/xml/file_paths.xml,并在其中指定应用需要共享的目录。这可以通过使用以下五种类型的路径元素来实现: - files-path:代表内部存储空间中应用私有目录下的files/ 目录。 - cache-path:代表内部存储空间中应用私有目录下的cache/ 目录。 - external-path:代表外部存储空间根目录。 - external-files-path:代表外部存储的文件路径,类似于Context.getExternalFilesDir(null)所获取的路径。 - external-cache-path:代表外部缓存区域。 第三步是使用FileProvider类提供的getUriForFile方法来检索文件的Content URI: ```java Uri uri = FileProvider.getUriForFile(context, com.example.myapp.fileprovider, file); ``` 第四步,为了将URI的安全性传递给其他应用,需要调用grantUriPermission() 方法。 第五步是使用Intent 将获取到的URI 传送给另一个应用程序: ```java Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, image/*); startActivity(intent); ``` 通过以上步骤适配File Provider的方法可以更安全地共享文件给其他应用。
  • 用于UIAutomatorViewerAndroid 9.0-10.0,最直接
    优质
    本文介绍了针对Android 9.0至10.0版本UIAutomatorViewer的快速适配方案,提供最简便的操作步骤和技巧。 请注意,在替换前务必备份原有文件。请先备份现有的tools文件夹,然后下载新文件并替换原有的tools文件夹。如果使用uiautomatorviewer抓取Android 9手机元素仍然出现问题,请随时留言或私信,我会尽快回复解答您的问题。
  • Android 7.0 版本新安装
    优质
    简介:本文将详细介绍如何在设备上安装Android 7.0系统更新的步骤和注意事项,帮助用户顺利完成升级。 处理Android 7.0版本升级以及自动安装过程中遇到的问题,并对权限控制进行优化。
  • 谨慎使用JavaFile#renameTo(File)
    优质
    本篇文章探讨了在Java编程中使用File类的renameTo()方法时可能遇到的问题和限制,并提供了相应的解决方案。适合希望深入了解文件操作的开发者阅读。 我一直以为Java中的`File#renameTo(File)`方法与操作系统下的move/mv命令功能相同,可以实现文件的改名或移动操作。然而,在实际使用中经常遇到问题:该方法返回失败(false),导致文件没有被成功移动,并且我很难找到具体的原因。后来干脆放弃了这个方法,自己编写了一个复制(copy)的方法来替代它,自那以后就再也没有出现过类似的问题了。
  • Android 7.0中获取文件Uri
    优质
    本文介绍了如何在Android 7.0系统中获取文件Uri的具体方法,帮助开发者解决因权限变更导致的问题。 本段落主要介绍了在Android 7.0系统上获取文件Uri的方法,并分享了相关的实现细节和技术要点。希望对读者有所帮助。
  • Android中动态改图片纯色
    优质
    本文介绍了如何在Android应用开发过程中实现动态将图片替换为指定颜色的功能,提供详细步骤和代码示例。 在代码内部动态更改图片的颜色时,请注意:只能对纯色图片进行颜色调整,如果图片包含两种或以上颜色,则整个图片将变为相应的单一颜色。
  • Android SDK 25版本,用于Android 7.0系统
    优质
    本SDK为Android开发者提供了一系列API和工具,专为Android 7.0(Nougat)系统设计,帮助开发者优化应用体验与功能。 Android SDK 26版本对应的是Android 8.0系统。将该版本复制到sdk\platforms文件夹下即可直接使用。
  • Android Studio中AndroidX(Android 9.0)置项目步骤
    优质
    本文详细介绍如何在Android Studio环境下为基于Android 9.0的项目启用和配置AndroidX库,涵盖关键步骤与注意事项。 本段落主要介绍了如何在Android Studio项目中适配AndroidX(适用于Android 9.0)的方法和步骤,并通过示例代码进行了详细的说明。内容对学习或工作中遇到相关问题的朋友们具有一定的参考价值,需要了解的朋友可以继续阅读下面的内容来一起学习。
  • 在Ubuntu置JDK环境
    优质
    本文介绍了如何在Ubuntu操作系统中配置Java Development Kit(JDK)的环境变量,包括安装JDK、设置PATH和JAVA_HOME等步骤。适合编程爱好者参考学习。 为了检查JDK版本并卸载OpenJDK,请先通过运行`java -version` 和 `javac -version`命令来查看当前的Java版本(例如,可能会显示为1.7.0_45)。然后使用`rpm -qa | grep java` 命令进一步确认已安装的软件包(如图所示)。 如果发现系统中存在OpenJDK 1.7.0-45版或其他相关版本,请以root权限执行以下命令进行卸载: ``` sudo rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 rpm -e --nodeps <其他相关包名> ``` 请注意,命令中需要填写具体的OpenJDK软件包名称。
  • Android 7.0 GMS CtsCameraTestCases 分辨率
    优质
    本项目专注于研究和测试Android 7.0系统中Google移动服务(GMS)框架下的CtsCameraTestCases模块,特别关注不同分辨率设置对相机应用性能的影响。 本段落档由展讯提供,详细讲解了Android 7.0 GMS CtsCameraTestCases模块分辨率的配置方法。