2

インテントを使用して任意のファイルを開こうとしています。ただし、それらを開くことができるアプリがインストールされているファイルタイプのActivityNotFoundExceptionが発生します。以下のソースではfile、PNGファイルを指すと、[アクションの完了]ダイアログが表示されます。ただし、mp3を開こうとすると、例外が発生します。Astroを開いて同じmp3ファイルをクリックすると、インストールされているMP3プレーヤーを示す[使用してアクションを完了する]ダイアログが表示されます。コードから同じダイアログを表示するにはどうすればよいですか?ファイルの場所、拡張子、およびMIMEタイプはすべて、デバッガーから検査すると正しく表示されます。

      String url = file.toURL().toString();
      String extension = MimeTypeMap.getFileExtensionFromUrl(url);
      String type = typeMap.getMimeTypeFromExtension(extension);
      mimeType.setText(type);
      boolean fileExists = file.exists();
      Intent viewIntent = new Intent(Intent.ACTION_VIEW);
      viewIntent.setData(Uri.fromFile(file));
      viewIntent.setType(type);
      MainActivity.this.startActivity(viewIntent);

答えは、Intent.setTypeIntent.setDataは相互に排他的であるということです。一方を呼び出すと、もう一方がクリアされます。したがって、呼び出しsetDataAndTypeが修正されます。

4

1 に答える 1

2

これを試して:

        Intent newIntent = new Intent();
        newIntent.setDataAndType(Uri.parse("file://"+filePath),mimeType);
        newIntent.setAction(Intent.ACTION_VIEW);
        try {

            startActivity(newIntent);

        } catch (android.content.ActivityNotFoundException e) {
            Toast.makeText(getApplicationContext(), "No handler for this type of file.", 4000).show();
        }
于 2012-12-17T23:11:40.187 に答える