2013-04-10 4 views
0

Je reçois une erreur d'exécution si je veux ouvrir un fichier qui ne peut pas gérer l'Android, comme .pm3 (au lieu de .mp3).Android: Ouvrir un fichier personnalisé

Erreur d'exécution:

E/AndroidRuntime(24095): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/download/ttt.pm3 } 

Voici mon code:

public void executeFile(FileItem fileItem) { 
    Intent intent = new Intent(); 
    intent.setAction(android.content.Intent.ACTION_VIEW); 
    File file = new File(fileItem.getFilePath()); 

    MimeTypeMap mime = MimeTypeMap.getSingleton(); 
    String ext = fileItem.getFileExtension(); 
    String type = mime.getMimeTypeFromExtension(ext); 

    intent.setDataAndType(Uri.fromFile(file), type); 

    this.fileManagerActivity.startActivity(intent); 
} 

Je pense que je devrais mettre si, avant la this.fileManagerActivity.startActivity (intention); ligne. Mais je ne sais pas comment je pourrais vérifier cela.

Donc ma question est que, comment pourrais-je éviter cette erreur d'exécution?

Merci pour les réponses :)

+0

vérifiez la réponse ci-dessous. – Raghunandan

Répondre

0

Essayez cette

public void executeFile(FileItem fileItem) { 

    try{ 
     Intent intent = new Intent(); 
     intent.setAction(android.content.Intent.ACTION_VIEW); 
     File file = new File(fileItem.getFilePath()); 

     MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     String ext = fileItem.getFileExtension(); 
     String type = mime.getMimeTypeFromExtension(ext); 

     intent.setDataAndType(Uri.fromFile(file), type); 

     this.fileManagerActivity.startActivity(intent); 
    } 
    catch(ActivityNotFoundException e) 
    { 
    //Do your fallback 
    } 
    } 
0

Vérifiez si le nom du fichier se termine par .mp3

String patterncheck= ".mp3"; 
File file = new File(fileItem.getFilePath()); 
{ 
if(file.getName().endsWith(patterncheck)) 

} 

Utilisez le contrôle de TTO ci-dessus si le nom de fichier se termine par .mp3 puis utiliser l'intention en conséquence

public void executeFile(FileItem fileItem) { 

String patterncheck= ".mp3"; 


File file = new File(fileItem.getFilePath()); 
{ 
if(file.getName().endsWith(patterncheck)) 
{ 
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 

MimeTypeMap mime = MimeTypeMap.getSingleton(); 
String ext = fileItem.getFileExtension(); 
String type = mime.getMimeTypeFromExtension(ext); 

intent.setDataAndType(Uri.fromFile(file), type); 

this.fileManagerActivity.startActivity(intent); 
} 
else 
{ 
     Toast.maketext(MainActivity.this,"Not an mp3",1000).show(); 
} 
}