
原来,只要把文件写在这里的话,可以不用动态申请权限,只要在manifest里面声明权限就ok了;
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
并且在API
60之后,根目录文件存储是需要用户授权的,就算你在AndroidManifestxml中配置了存储权限,用户不授权也是写不进去了。
SD卡读写权限:
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过
可以得到
这个目录里面,一般放一些长时间保存的数据
方法可以获取到 SDCard/ Android /data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过
方法可以获取到
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。并且
这个方法获得的文件存储路径适用于60以后系统,只要AndroidManifestxml配置读写权限了,就不需要用户再授权了。
正常开发中获取存储路径的方法是:
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。
设置->应用->应用详情里面的”清除数据“与”清除缓存“选项分别对应的是data/data/<application package>/和data/data/<application package>/cache
external storage (外部存储):
EnvironmentgetExternalStorageDirectory()SD根目录:/mnt/sdcard/ (60后写入需要用户授权)
contextgetExternalFilesDir(dir)路径为:/mnt/sdcard/Android/data/< package name >/files/…
contextgetExternalCacheDir()路径为:/mnt/sdcard//Android/data/< package name >/cache/…
internal storage(内部存储):
contextgetFilesDir()路径是:/data/data/< package name >/files/…
contextgetCacheDir()路径是:/data/data/< package name >/cach/…
运行cmd,dos模式下进去android模拟器的platform-tools 目录下例如:我的目录是 F:\Work\Android\android-sdk_r08-windows\android-sdk-windows\platform-tools(全英文路径不要有空格,现在的sdk应该升级为r09了)在platform-tools目录下(doc模式),输入 adb install -r \路径\路径\……apk很麻烦哦 希望对你有些帮助
android的硬存储是按照linux系统规则来划分的,用于存储客户信息和客户安装的应用的是/data分区,你如果使用的是c程序的话,应该是在/data/app之类的下面,我手头没有板子没法给你查。文件夹是google约定俗成的,不同厂家应该都是一样的路径。如果是厂家定制的应用则是在/system分区下,路径应该是/system/app下。
如果你是一个android系统学习者,而不是应用开发者的话,我建议看看以下system/etc/initrc对于你会有很大的帮助。
获得目录 = getFilePathByName(已经知道的文件名,根目录);
/
@param seekFileName 需要查找的File名
@param rootFile 在哪里查找的目录
@return 查找文件的全路径
/
private String getFilePathByName(String seekFileName,File rootFile){
List<File> files=parseFiles(rootFile);
for (File file:files){
if(filegetName()equals(seekFileName)){
return filegetAbsolutePath();
}
}
return null;
}
private List<File> parseFiles(File file){
List<File> listFiles=new ArrayList<>();
File[] files = filelistFiles();
for (File mf:files){
if(mfisDirectory()){
listFilesaddAll(parseFiles(mf));
}else{
listFilesadd(mf);
}
}
return listFiles;
}
用fx文件管理器可以做得到,还可以查看apk程序的真实版本、安装包名。
FX文件管理器 FX File Explorer是一款Android平台实用的文件管理器。
功能特性:
多窗口(不同的地点之间快速切换)
直观的刷卡选择用于管理多个项目(滑动手指,整个项目选择/取消他们的水平;看到YouTube影片,网站文件,或在应用程序的更多信息帮助)的手势
图标,并在文件管理器窗口的详细列表视图
剪切/复制/粘贴/删除使用剪贴板
存储空间的使用情况分析仪(点击任何文件管理器窗口内查看 - >详细信息)
应用程序文件(任何窗口内挖掘工具 - >帮助),也可在NextApp网站文件阅读器/编辑器(所有版本)
文本文件查看器
二进制(十六进制)浏览器(TAP文件 - >打开 - >在任何文件管理器"窗口中的二进制查看器)
图像浏览器
Zip文件解压/造物主媒体功能(完整版)
浏览图像集(相机胶卷(S),图像文件夹,设备上的所有图像)
浏览视频收藏(相机胶卷(S),设备上的所有影片)
浏览艺术家,专辑,播放列表,音频或显示所有曲目
重新排列拖放播放列表(可以选择多个文件整理的)网络功能(完整版)
Windows网络(SMB)
FTP
SSH FTP
加密钥匙圈(用来避免进入公共敏感的密码,同时不允许在设备被盗事件的访问)
蓝牙功能(完整版)
发送文件通过OBEX推
OBEX接收文件的推送服务器(可选,有些设备本身提供这项服务)
OBEX推送客户端和服务器可以使用WiFi高速传输的,当两个连接到同一网络。
蓝牙FTP客户端
探索/对设备内的应用程序
以上就是关于android app文件目录结构全部的内容,包括:android app文件目录结构、如何快速定位查看安卓App的安装目录、Android:怎么获取当前文件(类)所在的目录的完整路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)