2012-03-19 4 views
2

Mon code fonctionne correctement lors de l'ouverture d'un fichier dans la carte SD. Cependant, si j'ouvre un nom de fichier avec un espace blanc, une erreur se produit (exemple: Chemin - "/ sdcard/download/hello hi.jpg").Le nom de fichier Android avec espace blanc ne peut pas être ouvert

J'ai essayé string.replace ("", "% 20"); il ne fonctionne pas

try { 
    File file = new File(paths); 
    if (file.exists()) { 
     Uri path = Uri.fromFile(file); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(paths)); 

     if (!mimeType.equals("")) { 
      intent.setDataAndType(path, mimeType); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
     } else { 
      Toast.makeText(this, "Unsupported Format to Open", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} catch (ActivityNotFoundException e) { 
    Toast.makeText(this, "No Application Available to View this File", Toast.LENGTH_SHORT).show(); 
} catch(Exception e) { 
    Toast.makeText(this, "Error Occurred", Toast.LENGTH_SHORT).show(); 
} 

S'il vous plaît aider

+0

Quelle est l'erreur qui se produit? Collez tous les journaux pertinents. –

+0

Aucune erreur ne se produit. Exception lancée n'a aucun message. – Manoharan

+0

Chaque exception aura une trace de pile. Ce n'est pas montré parce que vous attrapez toutes les exceptions et en rejetant des informations précieuses. Insérez ceci dans les blocs catch: Log.e (TAG, e.getMessage(), e); –

Répondre

4

Vous devez échapper aux espaces. Essayez de remplacer "" par "\"

+0

Une erreur de syntaxe se produit. Séquence d'échappement invalide (les valeurs valides sont \ b \ t \ n \ f \ r \ "\ '\\) – Manoharan

+3

' "foo bar" .replace ("", "\\"); ' –

6

Essayez:

Uri uri = Uri.parse(paths); 
File file = new File(uri.getPath()); 

Uri.parse corrige toutes les questions de caractère des espaces blancs/backslash/illégaux dans les chemins et produit un "bon" uri.

+1

Je pensais que c'était évident, mais Voici... – grebulon

0

Remplacer % 20 avec l'espace comme ci-dessous

filePath = filePath.replaceAll("%20"," "); 

Cela a fonctionné pour moi

Questions connexes