2011-12-16 6 views
5

モバイル内部メモリに保存されているPDFを開きたいのですが... ファイルのパスをUriに渡そうとしています。私は、このエラー を示すこと)内部メモリに保存されているPDFを読む(ファイルのパスが有効でない)

targetFile.existsの

targetFile=new File("/data/data/package Name/app_mydir/test.pdf"); 

      } 

     Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(targetFile), "application/pdf"); 


       startActivity(intent); 
+0

ファイルはどのように保存されていますか?一般的にデータファイルは、ルートではなく、アプリケーションディレクトリ内の "files"という名前のフォルダ内にあります。 – FoamyGuy

+0

私はこれを使用しています ディレクトリ= getBaseContext()。getDir( "mydir"、Context.MODE_PRIVATE); \t \t \t \t \tファイルfile1 =新しいファイル(ディレクトリ、PdfName)。 – Reham

+0

"getBaseContext()"を "YourActivityName.this"に置き換えます。ファイルを別のアプリケーションに渡そうとしている場合は、おそらくMODE_PRIVATEを使用できません。 – FoamyGuy

答えて

0

チェック出力(.. 「ファイルパスが有効ではありません」しかし、私は正しい道を入れていることを確信しています。

これがtrueを返す場合は、パスに何か問題がある場合は別の方法を選択します。

+0

私はそれを試しました..本当に戻ります..私はパスに何が間違っているのか分かりません。 – Reham

+0

おそらく完全なスタックトレースを投稿するべきです。 –

8

アプリの内部ストレージディレクトリ内のファイルは、デフォルトでアプリケーション専用です。これは、PDF-Readerアプリがそのファイルを読むことができないことを意味します(あなたのアプリpidでは実行されないので、読み取り権限は与えられません)

Context.MODE_WORLD_READABLEフラグを使用して、他のアプリの明示的な読み取り権限を持つPDFを保存する必要があります。 それを正確に行う方法はdata storage documentationを参照してください。

また(上記のドキュメントに述べたように)あなたの内部ディレクトリ内のファイルを読み書きするContext.openFileOutput()Context.openFileInput()を使用しています。このようなパスをハードコードしないで、変更する可能性があります。

関連する問題