2013-11-28 3 views
14

私はアンドロイドFileProviderに関する質問があります。 私はpdf文書を保存し、それをデフォルトのプログラムで開きたいと思います。 外部ストレージに保存したくありません。Android Fileprovider:IllegalArgumentException:含まれている構成済みルートを見つけることができませんでした

FileDirectory/export/temp.pdfに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番目のパラメータとして渡すために何を持っていない - 私のファイルの場所、URI-権限を付与するか、他の何かできるクラス?私が何をしようとしたとしても、IllegalArgumentExceptionまたはNullPointerExceptionが発生しました。 マイ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> 
+1

私は全く同じ問題があります。あなたはまだ答えを見つけましたか? –

答えて

11

私はそれを持っています。 2つの異なる問題がありました。

  1. 最初の問題はCodeDivingによって回答されました。 私は、getUriForFile呼び出しのためにプロバイダ宣言からAuthorityを使用しなければなりませんでした。他のクラスを使用すると、NullPointerExceptionが発生しました。

  2. 私はfilesDirectoryからファイルを取得しようとしましたが、私のfile_pathではキャッシュディレクトリへのパスのみを宣言しました。私はそれを 'files-path'に変更しました。このエラーにより、IllegalArgumentExceptionが発生しました。

+2

'file-path'ではなく' files-path'であることを確認してください。簡単に逃した! – Malfunction

+2

この 'files-path'はどこに行きますか?私はどこでそれを指定するのかを意味します。 –

+2

@IgorGanapolsky彼は参照されたxmlファイル_file_path_の中で ' oldergod

7

あなたFileProviderファイル(XML)によると、2番目のパラメータはcom.example.myApp.myActivityです。つまり、

Uri uri = FileProvider.getUriForFile(getApplicationContext(), 
            "com.example.myApp.myActivity", pdf); 
関連する問題