Search code examples
androidapk-expansion-files

Save and Read Expansion Files from data/data/


I want to save expansion files on download directly on data/data(internal storage).Help will be appriciated


Solution

  • No.Your expansion files are downloaded in sdcard/Android/obb folder and you need to retrieve them and unzip it to use it further use Here is some code to get Expansion files

    private final static String EXP_PATH = "/Android/obb/";

    static String[] getAPKExpansionFiles(Context ctx, int mainVersion,
            int patchVersion) {
        String packageName = ctx.getPackageName();
        Vector<String> ret = new Vector<String>();
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            // Build the full path to the app's expansion files
            File root = Environment.getExternalStorageDirectory();
            File expPath = new File(root.toString() + EXP_PATH + packageName);
    
            // Check that expansion file path exists
            if (expPath.exists()) {
                if (mainVersion > 0) {
                    String strMainPath = expPath + File.separator + "main."
                            + mainVersion + "." + packageName + ".obb";
                    File main = new File(strMainPath);
                    if (main.isFile()) {
                        ret.add(strMainPath);
                    }
                }
                if (patchVersion > 0) {
                    String strPatchPath = expPath + File.separator + "patch."
                            + mainVersion + "." + packageName + ".obb";
                    File main = new File(strPatchPath);
                    if (main.isFile()) {
                        ret.add(strPatchPath);
                    }
                }
            }
        }
        String[] retArray = new String[ret.size()];
        ret.toArray(retArray);
        return retArray;
    }
    
    
    
    String[] test = getAPKExpansionFiles(myContext, 2, 0);
            Log.d(LOG_TAG, "total file : " + test.length);
    
            for (int i = 0; i < test.length; i++)
                Log.d(LOG_TAG, "filename is : " + test[i]);
            if (test.length > 0) {
                try {
                    file = APKExpansionSupport.getResourceZipFile(test)
                            .getAllEntries();
                    Log.d(LOG_TAG, "total zip file : " + file.length);
                    for (int i = 0; i < file.length; i++) {
    
                            Log.d(LOG_TAG, "zip filename is : "
                                    + (file[i].mFileName).split("/")[1]);
    
                            File("/mnt/sdcard/Android/obb/one.example.expansion.downloader/main.3.one.example.expansion.downloader.obb/myvideo.mp4");
                            File desc = new File("/mnt/sdcard/.YourFolder");
    
                            ZipHelper.unzip(test[0], desc);
    
    
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    

    Good Luck !