这里主要对几个路径做个概括:
root-path对应device_root,也就是_File file = new File(“/”)_,即根目录,一般不需要配置。
files-path对应 content.getFileDir() 获取到的目录。
cache-path对应 content.getCacheDir() 获取到的目录
external-path对应 Environment.getExternalStorageDirectory() 指向的目录。
external-files-path对应 ContextCompat.getExternalFilesDirs() 获取到的目录。
external-cache-path对应 ContextCompat.getExternalCacheDirs() 获取到的目录。
对应关系为:
| TAG | Value | Path |
| — | — | — |
| TAG_ROOT_PATH | root-path | / |
| TAG_FILES_PATH | files-path | /data/data/<包名>/files |
| TAG_CACHE_PATH | cache-path | /data/data/<包名>/cache |
| TAG_EXTERNAL | external-path | /storage/emulate/0 |
| TAG_EXTERNAL_FILES | external-files-path | /storage/emulate/0/Android/data/<包名>/files |
| TAG_EXTERNAL_CACHE | external-cache-path | /storage/emulate/0/Android/data/<包名>/cache |
3.Java代码获取URI
File f = new File(path,“img-”+curDateTimeStr +“.png”);
Uri uri;
if(Build.VERSION.SDK_INT>= 24) {
//判读版本是否在7.0以上
//参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件
uri =FileProvider.getUriForFile(this, “com.noway.android.foreverlove.fileprovider”, f);
//添加这一句表示对目标应用临时授权该Uri所代表的文件
}else{
uri = Uri.fromFile(f);
}
try {
OutputStream out = getContentResolver().openOutputStream(uri);
bm.compress(Bitmap.CompressFormat.PNG, 2, out);
out.flush();
out.close();
Intent service = new Intent(this, ImageUploadService.class);
service.putExtra(“path”,f.getPath());
startService(service);
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(this,e.getMessage(),Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}finally {
}
Android 10.0的手机会抛出异常:java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
Android10.0 临时解决方案
如何做好面试突击,规划学习方向?
面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。
同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
取](https://bbs.youkuaiyun.com/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!