0

要打开图像或声音,我们可以使用以下代码:

public String getExt(String filename)
{
    int dotIndex = 0;
    for(int i = filename.length()-1; i >= 0; i--)
    {
        if(filename.charAt(i) == '.')
        {
            dotIndex = i;
            break;
        }
    }

    return filename.substring(dotIndex + 1, filename.length());
}

public String getTypeAction(String s)
{
    int slashIndex = 0;
    for(int i = 0; i < s.length(); i++)
    {
        if(s.charAt(i) == '/')
        {
            slashIndex = i;
            break;
        }
    }
    return s.substring(0, slashIndex);
}
//////
//////

MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = getExt(file_to_action.getName());
ext = ext.toLowerCase();

String type = mime.getMimeTypeFromExtension(ext);

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file_to_action), getTypeAction(type) + "/*" );
startActivity(intent); !>

但问题是当我想打开任何不同的文件时,例如:.mhtml、.bak。APK。当我这样做时,我的应用程序崩溃了。我不知道问题出在哪里,我有 .mhtml、.odt extenio 的应用程序,但我的应用程序无法使用此应用程序打开文件。我如何打开所有文件格式或如何检查任何文件格式的可用应用程序?

4

2 回答 2

1

你也可以这样做

 File file = new File(filepath);

  String extension =   file.getName().substring(file.getName().lastIndexOf(".")+1);

    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getMimeTypeFromExtension(extension);
    Intent intent = new Intent();

    intent.setAction(android.content.Intent.ACTION_VIEW);
  intent.setDataAndType(Uri.fromFile(file), type);
    startActivity(intent);
于 2015-04-19T22:33:33.873 回答
0

这会崩溃,因为您的手机上没有安装用于处理此类数据的应用程序。

您应该使用queryIntentActivies(intent,flags)fromPackageManager来查看是否有任何应用程序可以处理您的Intent. 如果List<ResolveInfo>大小大于 0,则有一些应用程序可以处理您的数据。如果 size 为 0,则应显示 aToast并告知用户无法处理数据,startActivity()这种情况下也不要调用。

于 2012-06-20T11:26:54.857 回答