app

android 7.0文件处理

2018-03-28  本文已影响34人  rwy

FileProvider继承于ContentProvider,可以使文件共享时更安全。以前使用 file:///Uri,那么现在可以用content://Uri来替换。

定义FileProvider

在mainifest中注册,新增标签元素。

设置name属性和指定的值,android.support.v4.content.FileProvider。

设置authorities,一般由你的包名+fileprovider构成,保证唯一性。

设置exported为false。禁止跟其他应用交互。

设置grantUriPermission为true,授予文件访问权限。

指定可使用文件 一个FilerProvider只能为你预先指定的文件目录产生一个content URI。如何指定文件域和文件路径呢? 创建资源文件,res/xml/provider_path.xml。

注意,必须包含一个或者多个子元素。

files-path:代表APP的内部存储,类似Context.getFileDirs()目录中的文件

cache-path:代表APP内部存储中缓存目录下的文件。类似,getCacheDir()

external-files:代表外部存储的根目录。类似,Enviroment.getExternalStorageDirectory()

external-files-path:代表APP的外部存储根目录。类似,Context#getExternalFileDir(String).  Context.getExternalFileDir(null).

external-cache-path:代表APP外部缓存根目录。类似,Context.getExternalCacheDir()

配置成功,如何调用

根据系统版本判别,低于Android N的版本,仍然采用Uri.formUri(file)。而N版本或是以上版本是这样调用的,FileProvider.getUriForFile(mContext,getPackageName()+".fileprovider",file)

最后以APP安装示例结束FileProvider的基本使用方法。

上一篇 下一篇

猜你喜欢

热点阅读