我编写了一段代码,用于检测android中已安装的应用程序并使用该应用程序打开该文件。例如,应该使用某些办公室apk打开word文档。
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.fromFile(temp_file);
String type = getMimeType(temp_file.getName());
intent.setDataAndType(data, type);
this.startActivity(intent);
在上面的代码中, temp_file 是应该打开的文件。下面是我为获取MIME类型而编写的通用代码
public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
MimeTypeMap mime = MimeTypeMap.getSingleton();
type = mime.getMimeTypeFromExtension(extension);
}
return type;
}
但是当我执行时,它会抛出 android.content.ActivityNotFoundException exception.So,我在这里做错了吗?
答案 0 :(得分:0)
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
File file=new File("/sdcard/yourfile");
if(file.exists())
{
Uri path=Uri.fromFile(file);
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/readername");
try
{
startActivity(intent);
}
catch(ActivityNotFoundException e)
{
Toast.makeText(TestActivity.this, "No software for PDF", Toast.LENGTH_SHORT).show();
}
}
}
});
答案 1 :(得分:0)
这可能会对你有帮助,
private void readFile(File file){
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");// for .pdf file
//intent.setDataAndType(path, "application/msword");// for msword file
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e) {
String str= "No Application Available to View .pdf file.";
showToast(str);
}
其中file是要打开的文件的名称