Android开发,卸载应用的时候删除文件或文件夹
来源:互联网 发布:竖琴 踏板 知乎 编辑:程序博客网 时间:2024/05/01 11:17
2016-11-14更新
其实,谷歌提供了方法可以让我们很便捷的在卸载应用的时候同时删除该应用的文件夹。
就是在创建文件夹的时候,不要自己去指定文件夹,而是采用系统指定给你的文件路径去进行存储。
Context.getExternalFilesDir(String Type) 外部存储目录
Context.getExternalCacheDir(String Type) 外部存储缓存目录
Context.getFilesDir 内部存储目录
Context.getCacheDir 内部存储缓存目录
通过这几个方法,可以获取,应用创建时,系统自动创建的文件目录,在卸载时,系统会自动删除文件夹。
推荐使用Context.getExternalFilesDir和 getExternalCacheDir
因为获取内部存储目录获取到的地址在android文件夹内是不可见的,会出现一系列的问题
//以下内容是使用监听,但不能针对所有手机,所以建议使用上面的方法
Android与IOS一个比较大的不同就是文件夹部分,IOS在卸载应用的时候会同时删除应用所创建的所有文件及文件夹,Android不会。
以下是执行这个操作的方法。
首先写一个广播接收器即BroadcastReceiver
public class Receiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {String packageName = intent.getDataString();Log.e("Test", "---------------" + "PACKAGE_REMOVED" + packageName);File file1 = new File(CommonData.INI_DATABASE_PATH + "InfoData.sqlite");if (file1.isFile()&&file1.exists()) {file1.delete();}File file2 = new File(CommonData.INI_DATABASE_PATH + "InfoData.sqlite-journal");if (file2.isFile()&&file2.exists()) {file2.delete();}}}}
然后在Manifest中进行注册
<receiver android:name="com.digitalcq.maincity.util.Receiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver>
这里我同时监听了应用添加及应用卸载,可以按需要书写
PS:监听的是package的删除及添加,因为应用删除卸载时,package会删除添加
同时这里也可以在代码中注册,可以自行操作。
监听设置完毕,进行文件删除
1.)删除单个文件
删除文件相对来说比较简单就是我写在BroadcastReceiver 中的代码
2.)删除整个文件夹
这个操作因为我没有用,所以没有自行研究,以下是网上的代码
/** * 删除文件夹以及目录下的文件 * @param filePath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public boolean deleteDirectory(String filePath) { boolean flag = false; //如果filePath不以文件分隔符结尾,自动添加文件分隔符 if (!filePath.endsWith(File.separator)) { filePath = filePath + File.separator; } File dirFile = new File(filePath); if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } flag = true; File[] files = dirFile.listFiles(); //遍历删除文件夹下的所有文件(包括子目录) for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { //删除子文件 flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } else { //删除子目录 flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; //删除当前空目录 return dirFile.delete(); } /** * 根据路径删除指定的目录或文件,无论存在与否 *@param filePath 要删除的目录或文件 *@return 删除成功返回 true,否则返回 false。 */ public boolean DeleteFolder(String filePath) { File file = new File(filePath); if (!file.exists()) { return false; } else { if (file.isFile()) { // 为文件时调用删除文件方法 return deleteFile(filePath); } else { // 为目录时调用删除目录方法 return deleteDirectory(filePath); } } }
到此就可以了
0 0
- Android开发,卸载应用的时候删除文件或文件夹
- android--删除文件或递归删除文件夹
- Adobe Reader卸载或升级后,删除Adobe Reader的Cmap文件夹及文件
- Android java 删除文件或文件夹的方法
- 删除文件或文件夹
- 删除文件或文件夹
- 文件或文件夹删除
- java删除文件或文件夹的方法
- 无法删除文件或文件夹的解决办法
- 删除文件或文件夹的批处理
- 删除文件或文件夹的方法
- 通过ADB命令行卸载或删除你的Android设备中的应用
- Java 删除文件夹 或文件夹的子文件
- 删除文件夹中最早放入的文件或文件夹
- win10卸载LoadRunner,删除文件时提示“文件夹或文件已在另一程序中打开”
- android删除文件夹或文件(文件可不为空)
- 强力删除文件或文件夹
- [python] 删除文件或文件夹
- IntelliJ IDEA使用教程
- c# uploadimage - httphelper
- iOS之轻松上手block
- 修改input-placeholder 默认色
- css hack整理
- Android开发,卸载应用的时候删除文件或文件夹
- apache实现虚拟主机
- Java、Android 知识点笔记
- 【反编译】的下载与使用方法 。
- NSMutableAttributedString字体颜色等属性
- 辨识颜色(HTML版)
- 技术博客里的一句无关技术的帖子
- 比较难的日语单词
- Tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错