2010-01-12 10 views
2

C'est probablement une question vraiment bête/noob mais quelle est la meilleure méthode pour avoir un fichier .apk qui, une fois installé, dépose un fichier zip sur la carte SD, dans un répertoire spécifique, à partir des actifs ou du dossier brut?Zip à la carte SD à partir du fichier .APK

Répondre

2

J'ai une application qui doit faire cela et ce que je fais est de vérifier si ce dont j'ai besoin est sur la SDCard quand je cours, de cette façon je peux le remplacer si l'utilisateur le supprime. Voici mon code pour cela:

void copyAssets() 
{ 
    String[] files; 
    try 
    { 
     files = this.getResources().getAssets().list(""); 
    } 
    catch (IOException e1) 
    { 
     return; 
    } 

    if(!mWorkingPath.exists()) 
    { 
     if(!mWorkingPath.mkdirs()) 
     { 
      new AlertDialog.Builder(this) 
       .setTitle(R.string.ERROR) 
       .setMessage(R.string.FAILED_DIR_CREATE) 
       .setPositiveButton(android.R.string.ok, new OnClickListener(){ 
        @Override 
        public void onClick(DialogInterface dialog, int which) 
        { 
         dialog.dismiss(); 
        } 
       }) 
       .create() 
       .show(); 
     } 
    } 

    for(int i = 0; i < files.length; i++) 
    { 
     try 
     { 
      String fileName = files[i]; 

      if(fileName.compareTo("images") == 0 || 
       fileName.compareTo("sounds") == 0 || 
       fileName.compareTo("webkit") == 0) 
      { 
       continue; 
      } 

      File outFile = new File(mWorkingPath, fileName); 
      if(outFile.exists()) continue; 

      InputStream in = getAssets().open(fileName); 
      OutputStream out = new FileOutputStream(outFile); 

      // Transfer bytes from in to out 
      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = in.read(buf)) > 0) 
      { 
       out.write(buf, 0, len); 
      } 

      in.close(); 
      out.close(); 
     } 
     catch (FileNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
Questions connexes