0

如果我想打开一个无法处理 Android 的文件,例如 .pm3(而不是 .mp3),我会收到运行时错误。

运行时错误:

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(intent); 之前放一个 if 线。但我不知道我该如何检查。

所以我的问题是,我怎样才能避免这个运行时错误?

谢谢你的回答:)

4

2 回答 2

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
    }
    }
于 2013-04-10T08:48:50.600 回答
0

检查文件名是否以 .mp3 结尾

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

}

使用上面的 t 检查文件名是否以 .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();
}
}
于 2013-04-10T08:56:42.573 回答