2010-04-25 7 views
3

Lorsque vous joignez un fichier à un message électronique en utilisant l'intention ACTION_SEND (avec EXTRA_STREAM supplémentaire), l'application de messagerie copie-t-elle le fichier joint à son emplacement? Mon application crée un fichier et l'attache à un e-mail, mais cela peut arriver plusieurs fois et je voudrais pouvoir supprimer ce fichier quand il n'est plus nécessaire (pour ne pas inonder le stockage de l'utilisateur avec des données indésirables). Le fichier est-il sûr de supprimer après que l'intention de courrier électronique a commencé?Android ACTION_SEND Fichier joint

Répondre

0

Non, ce n'est pas sûr. Si vous ne l'avez pas enregistré dans la médiathèque.

2

Afin de toujours effectuer un nettoyage du stockage de l'utilisateur (SDCard), vous pouvez vérifier la date lastModified() du fichier pour un âge donné et le supprimer.

Par exemple:

private void checkTempFiles() { 
    Log.d(TAG, "--> checkTempFiles"); 

    // Check if directory 'YourTempDirectory' exists and delete all files 
    String tempDirectoryPath = Environment.getExternalStorageDirectory() 
      .toString() + "/YourTempDirectory"; 
    File dir = new File(tempDirectoryPath); 
    // Delete all existing files older than 24 hours 
    if (dir.exists() && dir.isDirectory()) { 
     String[] fileToBeDeleted = dir.list(); 
     for (int i = 0; i < fileToBeDeleted.length; i++) { 
      File deleteFile = new File(tempDirectoryPath + "/" 
        + fileToBeDeleted[i]); 
      Long lastmodified = deleteFile.lastModified(); 
      if (lastmodified + 86400000L < System.currentTimeMillis()) { 
       if (deleteFile.isFile()) { 
        deleteFile.delete(); 
       } 
      } 
     } 
    } 
}