1

デフォルトのリーダーでファイルを開こうとする次のコードがあります。

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.addFlag(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// type can be "application/msword" or "application/pdf"
intent.setDataAndType(Uri.fromFile(file), type);
activity.startActivity(intent);

ファイルは、アプリケーション フォルダー内の Android デバイスにあります。

/data/data/air.com.foo.foo/com.foo.foo/Local Store/folder1/file.ppt

問題は、起動されたアクティビティがファイルを見つけられないことです。呼び出し元コードでファイルの存在を確認したので、問題はありません。

さらに、アプリケーションフォルダーからアプリケーションで共有されているフォルダー(SDカード上)にファイルをコピーすると、アクティビティがファイルを見つけます。

追加したので失敗する理由がわかりません:

intent.addFlag(Intent.FLAG_GRANT_READ_URI_PERMISSION);

問題は、ファイルを共有フォルダーにコピーすることは、最初のアプリケーションフォルダー内にとどめておきたいため、満足のいく解決策ではないことです。

4

1 に答える 1

0

ファイルにアクセスできるアクティビティで、おそらくやりたいこと

file.setReadable(true, false);

true は読みやすさ、false は「所有者のみ」です。

見つけることはできますが、読むことはできないため、この許可がないことが問題のようです。

于 2013-02-11T22:56:53.253 に答える