0

デバイスの内部メモリから pdf ファイルを読み込もうとしています。私のコードは次のとおりです。

                File pdfFile;    

            pdfFile=new File("data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf");


                 if(pdfFile.exists()) 
                 {
                     try{
                      FileOutputStream fileOutput = openFileOutput(pdfFile.toString(), Context.MODE_WORLD_READABLE);
                     }
                     catch (Exception e) {
                        // TODO: handle exception
                         e.printStackTrace();
                    }
                     Uri path = Uri.fromFile(pdfFile); 
                 Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
                 pdfIntent.setDataAndType(path, "application/pdf");
                 pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                 try
                 {
                     startActivity(pdfIntent);
                 }
                 catch(ActivityNotFoundException e)
                 {
                     Toast.makeText(ChTable.this, "No Application available to view pdf", Toast.LENGTH_LONG).show();

                 }

しかし、Pdf リーダーにはエラー -File not supported-Or File Not found が表示されます。しかし、ファイルがこの場所にあることを確認しました。ファイルへのアクセス許可も変更しましたが、結果は同じです。誰かが私の問題を検出して解決するのを手伝ってくれますか?

4

3 に答える 3

0

PDFBoxライブラリを使用してPDFからデータを読み取ることができます-

http://pdfbox.apache.org/

于 2012-04-25T06:05:04.590 に答える
0
data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf"

このパスは正しいですか?

パスは次のようになるはずだと思います。

data/data/com/myapp/main/app_c"+md+"/c"+md+".pdf"
于 2012-04-25T06:12:51.943 に答える
0

パスがどうなるかを想定するのではなく、API の 1 つを使用してアプリケーションのファイル ディレクトリを取得する必要があります。

ただし、実際の問題は、そこで作成したファイルはおそらく所有アプリケーションにプライベートであるため、PDF リーダー アプリにアクセスする権限がない可能性があります。

その解決策は、ファイルモードを誰でも読み取り可能に変更するか、より一般的にはファイルを内部メモリではなく外部ストレージ (つまり、「sdcard」) に置くことです。パーミッション。ただし、デバイスに外部ストレージがあること、または存在する場合でも特定の時点でアクセスできることは保証されていないことを覚えておく価値があります。

于 2012-04-25T06:17:45.823 に答える