Android获取当前APP的data路径,以及获取存储卡上的data路径,obb路径

现在的Android应用将文件放到SD卡上时总是随便创建一个目录,那这样有个问题就是卸载应用时,这些垃圾还留在用户的SD卡上导致占用存储空间(猎豹清理大师这样的工具由此应用而生)。其实Android系统已经帮我们提供了相关的API可以将文件缓存到data/data目录下,当APP卸载时,这些垃圾文件也跟着自动卸载清除了。只是很多开发者不知道而已。我在这里记录一下,以后谁搜到了就可以使用了,当然,记得要申请存储卡写入权限:

    private static String getSystemFilePath(Context context) {
        String cachePath;
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
                || !Environment.isExternalStorageRemovable()) {
            cachePath = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath();
//            cachePath = context.getExternalCacheDir().getPath();//也可以这么写,只是返回的路径不一样,具体打log看
        } else {
            cachePath = context.getFilesDir().getAbsolutePath();
//            cachePath = context.getCacheDir().getPath();//也可以这么写,只是返回的路径不一样,具体打log看
        }
        return cachePath;
    }

得到Android/data/obb 的路径:

        String obbPath = this.getObbDir().getAbsolutePath();
        Log.v("tag_2", "obbPath = " + obbPath);

附上obb 路径的作用:

如果我们设计一款资源包含比较多的游戏,可能你会发现最终生成的APK文件可能高达300MB,但是APK文件很大导致Android系统无法正常安装,而这么大其实都是游戏中用到的资源文件,我们放到SD卡上可能其他应用也可以访问,比如说系统的图片管理器会索引游戏中的图片资源,而音乐播放器也会索引资源中的音乐,所以Android 2.3的OBB文件(Opaque Binary Blob)可以很好的解决大文件在SD卡上分离出APK文件,同时别的程序没有权限访问这样一种隔离的文件系统。

=======================================

如果你觉得帮到了你,请给作者打赏一口饭吃:


你可能感兴趣的:(Android获取当前APP的data路径,以及获取存储卡上的data路径,obb路径)