0

我写了一段代码,检测android中安装的应用程序并用应用程序打开文件。例如,应该用一些office 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异常。那么,我在这里做错了吗?

4

3 回答 3

1

您正在调用getMimeType()并传递文件名。但是您的方法getMimeType()需要一个 URL。文档MimeTypeMap.getFileExtensionFromUrl()专门说:

此方法是获取 url 扩展名的便捷方法,对于其他字符串具有未定义的结果。

您可能正在null接受 mime 类型。添加一些调试日志并检查getMimeType()返回的内容。

另外,查看logcat。它应该告诉你Intent它试图解决的内容。这也应该给你一个提示。

于 2012-10-10T22:06:23.503 回答
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();
                              }
                        }
                  }
            });
于 2012-10-10T09:01:43.000 回答
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 是要打开的文件的名称

于 2012-10-10T09:16:45.263 回答