2017-10-19 24 views
0

私は私がコンテンツの形式場合URIを抽出しようとしている File f = new File(getContext().getCacheDir() + /pdf_name.pdf");アセットからPDFを共有します。 FileUriExposedException

を使用してファイルを取得interalyアプリ/資産/ pdf_name.pdfに保存さ

にあるPDFを開くようにしたいです: //

Uri pdfUri = FileProvider.getUriForFile(getContext(), "pcg_name.fileprovider", file);

を使用してが、私は

を得ました

ALthout私が立体配置のき

<paths> 
    <cache-path 
     name="my_documents" 
     path="assets/"/> 
    <cache-path 
     name="my_pdf" 
     path="cache/"/> 
</paths> 

私の目標は、テントを経由してPDFを開くことですが、私はちょうど行うことはできません。

Intent target = new Intent(Intent.ACTION_VIEW); 
target.setDataAndType(Uri.fromFile(pdfFile),"application/pdf"); 
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
target.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // DON'T FORGET this 

それがウリは例外さらさファイル投げるので

答えて

1

I get the file using

そのコードはアセットとは関係ありません。アセットは開発マシンのファイルです。手動でコンテンツをファイルにコピーしない限り、デバイス上のファイルではありません。

おそらく、アセットからnew File(getContext().getCacheDir() + /pdf_name.pdf")にファイルをコピーした質問には表示されていないコードがあります。

ALthout I've configurated

いずれもnew File(getContext().getCacheDir() + /pdf_name.pdf")に対して有効ではありません。 1つの<cache-path>要素を削除して、あなたを残して、他の<cache-path>要素からpath属性を取り除く:あなたは私の一日save'd

<paths> 
    <cache-path name="my_pdf"/> 
</paths> 
+0

。 Android Studioでは最初に名前を入力すると、パスが含まれているはずだというエラーが強調表示されたので、私はこのアイデアを放棄していたため、近くにいた。しかし、それはコンパイルし、すべての作品の後に。 – murt

関連する問題