0

インテント アクションを使用してファイルを開こうとしていますが、pdf および画像ファイルを開くことはできません

画像の場合、すべてのアプリケーションがクラッシュします (ギャラリー アプリを含む)

doc/docx の場合、私はオフィス スイートを使用していますが、パッケージからランタイム例外が発生します (java.lang.RuntimeException)。以下のコードを参照してください。

Intent intent = new Intent();
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setAction(Intent.ACTION_VIEW);

if (extension.equalsIgnoreCase("jpg")
                    | extension.equalsIgnoreCase("jpeg")
                    | extension.equalsIgnoreCase("png")
                    | extension.equalsIgnoreCase("bitmap")) {
                intent.setDataAndType(Uri.parse(fileName), "image/*");
            } else if (extension.equalsIgnoreCase("xml")
                    | extension.equalsIgnoreCase("txt")
                    | extension.equalsIgnoreCase("csv")) {
                intent.setDataAndType(Uri.parse(fileName), "text/*");
            } else if (extension.equalsIgnoreCase("mp4")
                    | extension.equalsIgnoreCase("3gp")) {
                intent.setDataAndType(Uri.parse(fileName), "video/*");
            } else if (extension.equalsIgnoreCase("pdf")) {
                intent.setDataAndType(Uri.parse(fileName), "application/pdf");

                System.out.println("Pdf file to open "+fileName);

            } else if (extension.equalsIgnoreCase("doc")
                    | extension.equalsIgnoreCase("docx")) {

                intent.setDataAndType(Uri.parse(fileName), "application/word");

            }


            context.startActivity(intent);

しかし、ファイルエクスプローラーに移動してこれらのファイルを開こうとすると、両方のファイルが正しく開きます。

4

2 に答える 2

1

これを試して:

Intent intent = new Intent(Intent.ACTION_VIEW);

        //intent.setAction(Intent.ACTION_VIEW);

        if (extension.equalsIgnoreCase("jpg")
                | extension.equalsIgnoreCase("jpeg")
                | extension.equalsIgnoreCase("png")
                | extension.equalsIgnoreCase("bitmap")) {
            intent.setDataAndType(Uri.parse("file://"+fileName), "image/*");
        } else if (extension.equalsIgnoreCase("xml")
                | extension.equalsIgnoreCase("txt")
                | extension.equalsIgnoreCase("csv")) {
            intent.setDataAndType(Uri.parse("file://"+fileName), "text/*");
        } else if (extension.equalsIgnoreCase("mp4")
                | extension.equalsIgnoreCase("3gp")) {
            intent.setDataAndType(Uri.parse("file://"+fileName), "video/*");
        }else if(extension.equalsIgnoreCase("pdf")){
            intent.setDataAndType(Uri.parse("file://"+fileName), "application/pdf");
        }else if( extension.equalsIgnoreCase("doc")
                | extension.equalsIgnoreCase("docx")){
            intent.setDataAndType(Uri.parse("file://"+fileName), "text/*");
        }
        // else
        // if(extension.equalsIgnoreCase("mp3")|extension.equalsIgnoreCase("amr")|extension.equalsIgnoreCase("wav")){
        // intent.setDataAndType(Uri.parse(fileName), "audio/mp3");
        // }
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
于 2012-12-08T09:26:57.190 に答える
0

ファイルuriクラスがファイルを返さないという問題だと思いますエラーが見つかりました

Uri.parse(fileName) でした

私は今Uri.fromFile(fileName)を使用しました。

于 2012-12-07T19:10:04.767 に答える