私はアプリストレージにダウンロードしたファイルのいくつかを表示/オープンしようとしていますが、何らかの理由でスポーンされたアクションビューのアクティビティにファイルを開きます。 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に続き、問題の解決に役立ちました。
'file:/// data/user/0/com.app'はプライベートアプリのストレージです – Selvin
@Selvinはい、それは私が目指していたものです。しかし、アクションインテントをインスタンス化するとPDFドキュメントが表示されないようには考えられませんでした。 – Daniel
ファイルプロバイダを使用してください... – Selvin