7.0适配
出于文件安全考虑,只可访问所属应用的fileProvier授权下的目录,以uri形式提供
多个FileProvider冲突
自定义继承FileProvider
指定专属的authorities
建议格式 => 主工程包名.module名.fileProvider
<provider
android:name=".third.my.MyFileProvider"
android:authorities="${applicationId}.my.fileProvider"//命名不与其他冲突
android:exported="false"
android:grantUriPermissions="true"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"
/>
</provider>
相关介绍:www.jianshu.com/p/3879bb6ff…
文件系统
--data/data/
--应用私有目录(app卸载时随之删除,普通用户不可操作)
getFilesDir()
getCacheDir()
Environment.getDataDirectory()
--Android/data/
--外部存储的应用私有目录(app卸载时随之删除,普通用户可操作,7.0开始限制其他应用的访问)
getExternalFilesDir()
getExternalCacheDir()
Environment.getExternalStorageDirectory()
--外部存储的公共目录(无限制)
--Music DIRECTORY_MUSIC
--Pictures DIRECTORY_PICTURES
--Download DIRECTORY_DOWNLOADS
--Movies DIRECTORY_MOVIES
Environment.getExternalStoragePublicDirectory(String type)
--外部存储的其他目录(通常不需要用到)
Environment.getExternalStorageDirectory();
相关介绍:yifeng.studio/2017/04/27/…
对于设备中每一个安装的 App,系统都会在内部存储空间的 data/data 目录下以应用包名为名字自动创建与之对应的文件夹。这个文件夹用于 App 中的 WebView 缓存页面信息,SharedPreferences 和 SQLiteDatabase 持久化应用相关数据等。
考虑内部存储空间容量有限,普通用户不能直接直观地查看目录文件等其他原因,Android 在外部存储空间中也提供有特殊目录供应用存放私有文件,文件路径为: /storage/emulated/0/Android/data/app package name