2013-04-10 50 views
0

如果我想打開無法處理Android的文件,如.pm3(而不是.mp3),則會出現運行時錯誤。Android:打開自定義文件

運行時錯誤:

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

這裏是我的代碼:

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); 
} 

我認爲我應該在this.fileManagerActivity.startActivity(意圖)之前,如果把一個;線。 但我不知道如何檢查。

所以我的問題是,我怎麼能避免這種運行時錯誤?

謝謝你的答案:)

+0

檢查下面的答案。 – Raghunandan 2013-04-10 09:31:38

回答

0

試試這個

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

檢查文件名以.mp3

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

} 

使用上述TTO檢查結束,如果文件名以.mp3結尾然後相應地使用意圖

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(); 
} 
}