转载请标明出处:
http://blog.csdn.net/djy1992/article/details/72533310
本文出自:【奥特曼超人的博客】
权限更改
Android 7.0 做了一些权限更改,这些更改可能会影响您的应用。
系统权限更改
目录权限
为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问 (0700)。此设置可防止私有文件的元数据泄漏,如它们的大小或存在性。此权限更改有多重副作用:
私有文件的文件权限不应再由所有者放宽,为使用 MODE_WORLD_READABLE 和或 MODE_WORLD_WRITEABLE 而进行的此类尝试将触发 SecurityException。
- 注:迄今为止,这种限制尚不能完全执行。应用仍可能使用原生 API 或 File API 来修改它们的私有目录权限。但是,我们强烈反对放宽私有目录的权限。
文件权限更改
FileUriExposedException 异常
传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。
因此,尝试传递 file:// URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider。
DownloadManager 不再按文件名分享私人存储的文件。旧版应用在访问 COLUMN_LOCAL_FILENAME 时可能出现无法访问的路径。
面向 Android 7.0 或更高版本的应用在尝试访问 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。
通过使用 DownloadManager.Request.setDestinationInExternalFilesDir()
或者 DownloadManager.Request.setDestinationInExternalPublicDir()
将下载位置设置为公共位置的旧版应用仍可以访问 COLUMN_LOCAL_FILENAME 中的路径,但是我们强烈反对使用这种方法。
对于由 DownloadManager 公开的文件,首选的访问方式是使用ContentResolver.openFileDescriptor()
在应用间共享文件 StrictMode API
对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。
如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。
要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。
进行此授权的最简单方式是使用 FileProvider 类。如需了解有关权限和共享文件的详细信息,请谷歌开发中的《共享文件权限操作方法》
设置文件共享
了解如何设置您的应用程序共享文件。共享文件
了解如何通过生成文件的内容URI,向URI授予访问权限,并向应用程序发送URI,从而向另一个应用程序提供文件。请求共享文件
了解如何请求另一个应用程序共享的文件,接收该文件的内容URI,并使用内容URI打开文件。获取文件信息
学习如何应用程序可以使用由fileprovider检索包括MIME类型和文件大小,文件信息生成的内容URI。
|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。