2017-02-09 3 views
0

私はアプリストレージにダウンロードしたファイルのいくつかを表示/オープンしようとしていますが、何らかの理由でスポーンされたアクションビューのアクティビティにファイルを開きます。 fileEntity.getFile()の下にFileインスタンスが返されます。アクションビューのインテントにファイルを表示する権限がありません

Uri uri = Uri.fromFile(fileEntity.getFile()); 
Debugger.message("Viewing file of type " + file.mime + " at " + uri); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setDataAndType(uri, fileEntity.mime); 
startActivity(intent); 

出力:

10:44:ファイルにタイプapplication/pdfのファイルを表示10.161 5660 com.app VERBOSEメッセージ:///data/user/0/com.app/files /1_lol.pdf

10:44:10.421 2551#2551 ERROR DisplayData openFd:java.io.FileNotFoundException:「ファイルを読み込むことができません2551 ERRORのPdfLoader(doesnの10.421 2551#:44:アクセス許可が

10を否定しましたt open)表示データ[PDF:1_lol.pdf] + FileOpenable、uri:file:// /data/user/0/com.app/files/1_lol.pdf

は、これが動作するようには思えた、私はもともとファイルを保存する方法である:

File file = fileEntity.getFile(); 
FileOutputStream fos = new FileOutputStream(file); 
HttpResponse response = getClient().rawRequest(fileEntity.url); 

response.getEntity().writeTo(fos); 
response.getEntity().consumeContent(); 
fos.flush(); 
fos.close(); 

問題は、一度ファイルということですダウンロードできません。

何か不足していますか、内部ストレージの仕組みがわかりませんか?

私はアンドロイドマニフェストでこれらの権限を持っています。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

編集ので、Androidのドキュメントのすべての例から私はAPPCOMPATライブラリにFileProviderに関するすべてのリソースを見つけることができませんでした。 instructions hereに続き、問題の解決に役立ちました。

+0

'file:/// data/user/0/com.app'はプライベートアプリのストレージです – Selvin

+0

@Selvinはい、それは私が目指していたものです。しかし、アクションインテントをインスタンス化するとPDFドキュメントが表示されないようには考えられませんでした。 – Daniel

+1

ファイルプロバイダを使用してください... – Selvin

答えて

-2

Android 6.0(APIレベル23)以降では、ユーザーの許可を求める必要があります。 Like:https://developer.android.com/training/permissions/requesting.html

+1

申し訳ありませんが、元の質問に権限を追加するのを忘れていました。私は現在持っている権限を追加しました。質問には、ファイルに書き込むことはできますが、ファイルを開くことはできません。 – Daniel

関連する問題