如何在android中打开已安装应用程序的文件?

时间:2012-10-10 08:52:21

标签: android android-intent

我编写了一段代码,用于检测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,我在这里做错了吗?

2 个答案:

答案 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是要打开的文件的名称