要打开图像或声音,我们可以使用此代码:
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的应用程序,但我的应用程序无法使用此应用程序打开文件。 我如何打开所有文件格式或如何检查任何文件格式的可用应用程序?
答案 0 :(得分: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);
答案 1 :(得分:0)
此崩溃是因为没有应用程序来处理手机上安装的那类数据。
您应该使用PackageManager
中的queryIntentActivies(intent,flags)
来查看是否有任何应用可以处理您的Intent
。如果List<ResolveInfo>
大小大于0,则有一些应用程序可以处理您的数据。如果大小为0,则应显示Toast
并告知用户无法处理数据,并且在这种情况下也不要调用startActivity()
。