Android FileProviderについて質問があります。PDFドキュメントを保存してデフォルトのプログラムで開きたいのですが、外部ストレージに保存したくありません。
PDFをFilesDirectory/export/temp.pdfに正常に保存した後、
FileProvider.getUriForFile()を使用してURIを生成しようとしました。
File path = new File(getFilesDir(), "export");
File pdf = new File(path + File.separator + "temp.pdf");
pdf.getParentFile().mkdirs();
if (!pdf.exists())
pdf.createNewFile();
Uri uri = FileProvider.getUriForFile(getApplicationContext(), "?", pdf);
質問:2番目のパラメーター「Authority」として何を渡す必要がありますか?ファイルの場所、URI許可を付与できるクラスなどですか?私が試したことは何でも、IllegalArgumentExceptionまたはNullPointerExceptionにつながりました。 My FileProvider(XML):
<provider
Android:name="Android.support.v4.content.FileProvider"
Android:authorities="com.example.myApp.myActivity"
Android:exported="false"
Android:grantUriPermissions="true">
<meta-data
Android:name="Android.support.FILE_PROVIDER_PATHS"
Android:resource="@xml/file_path"/>
</provider>
参照ファイル:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:Android="http://schemas.Android.com/apk/res/Android">
<cache-path name="pdfTemplates" path="export/" />
</paths>
私はそれを持っている。 2つの異なる問題がありました
最初の問題はCodeDivingによって回答されました。 getUriForFile呼び出しには、プロバイダー宣言の権限を使用する必要がありました。他のクラスを使用すると、NullPointerExceptionが発生しました。
FilesDirectoryからファイルを取得しようとしましたが、file_pathで、Directoryをキャッシュするためのパスのみを宣言しました。 'files-path'に変更すると、機能しました。このエラーにより、IllegalArgumentExceptionが発生しました。
FileProviderファイル(XML)によると、2番目のパラメーターはcom.example.myApp.myActivity
です。あれは
Uri uri = FileProvider.getUriForFile(getApplicationContext(),
"com.example.myApp.myActivity", pdf);