我正在尝试使用 Intent
打开一个 File
,但 Android 没有打开适合该文件类型的应用程序。
使用以下代码,每个文件 - pdf、图像,所有内容 - 都使用音乐应用程序打开:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.fromFile(file));
startActivity(i);
当我手动指定 mimeType 时,会打开正确的应用程序 - 在本例中是图片查看器。
i.setDataAndType(Uri.fromFile(file), "image/*");
有什么方法可以让 Android 打开正确的应用程序,而不是手动设置根据文件扩展名判断的类型?
最佳答案
你可以这样做:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.fromFile(file));
intent.setType(FileHelper.getMimeType(file));
startActivity(intent);
这是我的助手类的(相关部分)从文件中获取 mimeType。
关键是要用MimeTypeMap
public class FileHelper
{
public static String getMimeType(File file)
{
return getMimeType(file.getName());
}
public static String getMimeType(String fileName)
{
String extension = getExtension(fileName);
if (extension == null)
return null;
return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
public static String getExtension(File file)
{
return getExtension(file.getName());
}
public static String getExtension(String fileName)
{
int extensionDelimiter = fileName.lastIndexOf(".");
if (extensionDelimiter == -1)
return null;
return fileName.substring(extensionDelimiter + 1, fileName.length());
}
}
希望这对您有所帮助。
关于android - 打开文件的正确 mimeType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382730/